首页 > 解决方案 > 我如何通过列值唯一标识 csv 中的一行,然后在另一列中检查“通过”关键字并打印它

问题描述

我有一个 CSV 文件,

APIName_UniqueId,TC_Status,Comment
123456,PASSED,API "123456_Get Download Credential_1" is PASSED 
123457,PASSED,API "123457_Get Upload Credential_1" is PASSED 

如果有“通过”关键字,我想检查 APIName_UniqueId 并检查评论。

如果两个条件都符合我想打印评论,否则打印失败的声明。

我试过这个脚本,但它不起作用,

import pandas as pd

df = pd.read_csv('C:\Work\Test\Python_Scripts\Final_Result.csv')

for value_i in df.APIName_UniqueId:

if df[(df['APIName_UniqueId'] == 123456) &(df['Comment'].str.contains('PASSED'))]:
             print(df['Comment'])

    else:
        print('Test Case Failed')

有人可以帮我吗 ?

标签: pythonpandaspython-2.7csvparsing

解决方案


您可以使用np.where传递 3 个参数:(1)条件,(2)如果为真,则为结果,(3)如果为假,则为结果。

(np.where((df['APIName_UniqueId'] == 123456) & 
          (df['Comment'].str.contains('PASSED')), df['Comment'], 'Test Case Failed')
)
output:
array(['API "123456_Get Download Credential_1" is PASSED ',
       'Test Case Failed'], dtype=object)

请记住,建议尽可能避免使用 for 循环结构,它们不像原生pandasnumpy函数那样优化


推荐阅读