![](/img/trans.png)
[英]How to write the results from output in robotframework to csv in dict format using python?
[英]How to write into csv using the results generated from a DataFrame in python?
我正在使用Python中的Pandas模块中的DataFrame从tsv文件中读取数据。
df = pandas.DataFrame.from_csv(filename, sep='\t')
该文件大约有5000列(4999个测试参数和1个结果/输出值)。
我遍历整个tsv文件,并检查结果值是否与预期的值匹配。 然后,我将此行写入另一个csv文件中。
expected_value = 'some_value'
with open(file_to_write, 'w') as csvfile:
csvfwriter = csv.writer(csvfile, delimiter='\t')
for row in df.iterrows():
result = row['RESULT']
if expected_value.lower() in str(result).lower():
csvwriter.writerow(row)
但是在输出的csv文件中,结果不正确,即各个列的值未进入其各自的列/单元格中。 它被追加为行。 如何在csv文件中正确写入此数据?
建议的答案效果很好,但是,我需要检查多个条件。 我有一个列表,其中包含一些值:
vals = ['hello','foo','bar']所有行的列之一的值看起来像是'hello,foo,bar'。 我需要进行两项检查,一项是在vals列表中是否存在值“ hello,foo,bar”的列,或者结果值是否与期望值匹配。 我写了下面的代码
df = pd.DataFrame.from_csv(filename, sep='\t')
for index, row in df.iterrows():
csv_vals = row['COL']
values = str(csv_vals).split(",")
if(len(set(vals).intersection(set(values))) > 0 or expected_value.lower() in str(row['RESULT_COL'].lower()):
print row['RESULT_COL']
您应该创建一个数据框,其中有一列“ RESULT”和一个“ EXPECTED”。
然后,您可以使用以下命令过滤匹配的行并将其仅输出到csv:
df.ix[df['EXPECTED']==df['RESULT']].to_csv(filename)
您可以像这样过滤值:
df[df['RESULT'].str.lower().str.contains(expected_value.lower())].to_csv(filename)
与在代码中所做的一样,这将适用于过滤包含expected_value
值。 如果要获得完全匹配,可以使用:
df.loc[df['Result'].str.lower() == expected_value.lower()].to_csv(filename)
正如您在注释中建议的那样,对于多个条件,您将需要以下内容:
expected_values = [expected_value1, expected_value2, expected_value3]
df[df['Result'].isin(expected_values)]
更新:
并根据多个条件进行过滤并过滤所需的列:
df.ix[df.isin(vals).any(axis=1)].loc[df['Result'].str.lower() == expected_value.lower()].to_csv(filename)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.