繁体   English   中英

如何使用python中的DataFrame生成的结果写入csv?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM