Python pandas在列等于值

时间:2017-05-18 08:12:52

标签: python csv pandas

我有我的算法和代码。它可以工作,但将数据帧写入输出CSV文件中的整个列。我想将数据帧写入只有列等于某个值的行。这是在第6行。其余的逻辑,语法似乎很好。我研究了一些公平的选项,包括sort_values(),apply(),map(),lambda,写if语句。这似乎是一个简单的解决方案,但我无法将数据帧写入特定的行和列组合。如果之前已经提出过这个问题,请参考解决方案。

谢谢。

输出文件 - 第1行

df_Working_File = pd.read_csv('Working\WF.csv')

输入文件 - 第2行

df_GSTRemoved = pd.read_csv('Working\GSTRemoved.csv')

用于vlookup的Concat主要在输出文件中 - 第3行

df_OriginalKey = df_GSTRemoved.apply(lambda x:x['Origin'] + x['Destination'],1)

输入文件中的

用于vlookup的Concat - 第4行

df_Key = df_Working_File.apply(lambda x:x['Origin'] + x['Destination'],1)

要写入的列数据集的值 - 第5行

df_Charge_Per_Item = df_GSTRemoved['500g']

第6行 - 我想将数据帧写入第9列,用于输入文件中Origin为GL的所有行

df_Working_File.apply(df_Charge_Per_Item, df_Working_File['Origin'] == 'GL')

第7行 - 写入没有索引列的csv

df_Working_File.to_csv("Working/writetoCSV.csv", index=False)

1 个答案:

答案 0 :(得分:1)

您可以使用boolean vactors forexample:

编写数据框的子集
# boolean vector:
selector = df_Working_File['Origin'] == 'GL'
# write only rows to csv where the vector is true:
df_Working_File[selector].to_csv("Working/writetoCSV.csv", index=False)

如果您还想只写某些列,可以使用:

df_Working_File[selector][['col1', 'col2']].to_csv("Working/writetoCSV.csv", index=False)

顺便说一句,你可以像这样连接列:

df_OriginalKey = df_GSTRemoved.Origin + df_GSTRemoved.Destination

修改

如果您只想更改/编辑符合特定条件的行,可以执行以下操作:

 selector = df_Working_File['Origin'] == 'GL'
 df_Working_File.ix[selector, 'column_to_change'] = 'changed value'

我希望这会有所帮助。