如何将两个新闻字段添加到大型csv

时间:2017-09-07 15:30:37

标签: python pandas

我有两个大的csv文件。一个是另一个的子集(但不是以相同的顺序),但最后添加了两个新字段。例如:

文件一:

a, b, c
b, a, c
a, c, d
c, a ,a

文件二:

c, a, a, g, i
b, a, c, f, g

我想创建一个新版本的文件,其中包含这些新字段,它们存在于文件二中。 E.g。

修改过的文件一:

a, b, c,, 
b, a, c, f, g
a, c, d,,
c, a ,a, g, i

在熊猫中我可以阅读它们,虽然它们很大,但是

df1 = pandas.read_csv("file1.csv")
df2 = pandas.read_csv("file2.csv")

如何创建修改过的文件?

2 个答案:

答案 0 :(得分:1)

这将满足您的需求:

df1 = pd.read_csv("file1.csv", header=None)
df2 = pd.read_csv("file2.csv", header=None)
df1.merge(df2, on=[0,1,2], how='left').to_csv('file3.csv', header=None, index=False)

保持两个dfs的记录使用:

df1.merge(df2, on=[0,1,2], how='outer')

如果您有更多列,则可以使用columns.tolist()来避免硬输入:

df1.merge(df2, on=df1.columns.tolist(), how='outer')

答案 1 :(得分:1)

您可以使用pandas.DataFrame.merge记录here

modified_df1 = df1.merge(df2, how='left') 

默认情况下,如果调用中未定义on,则merge将使用两个数据帧的交集来执行连接。

实施例

>>> df1 = pd.DataFrame([['a', 'b', 'c'],['b', 'a', 'c'],['a', 'c', 'd'],['c', 'a' ,'a']])
>>> df2 = pd.DataFrame([['c', 'a', 'a', 'g', 'i'],['b', 'a', 'c', 'f', 'g']])
>>> df1.merge(df2, how='left') 
   0  1  2    3    4
0  a  b  c  NaN  NaN
1  b  a  c    f    g
2  a  c  d  NaN  NaN
3  c  a  a    g    i
>>> 

然后你可以将modified_df1写回csv文件,如:

modified_df1.to_csv('modified_file.csv', header=None, index=False)