簡體   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