Pandas在列

时间:2017-03-03 16:15:24

标签: python csv pandas merge

嗨,我知道之前已经回答了这个问题,但我得到的结果很奇怪。所以我希望能解释一下我的方法有什么不对。

我有2个csv文件

F1

A,B,C
1,2,3
1,2,3
3,3,3

F2

C,D,F
3,3,1
1,1,1

我正在尝试合并它们。 简单

f = pd.merge(left=f1, right=f2, how='outer', on='C')

但是合并结果而不是将预期表格作为

A,B,C,D,F
1,2,3,3,1
1,2,3,3,1
3,3,3,3,1

我的结果为:

A,B,C,D,F
1,2,3
1,2,3
3,3,3
,,3,3,1
,,1,1,1

不确定我为什么会这样做。

我没有处理这些确切的数据。我将这些数据从csv文件中读取为

pd.read_csv('filename.csv', usecols=[colnames])

编辑:

这是我的代码:

import pandas as pd
f2 = pd.read_csv('filename1.csv', usecols=[colnames])
f1 = pd.read_csv('filename2.csv', usecols=[colnames])
f = pd.merge(left=f1, right=f2, how='left', on='MergeCol')

1 个答案:

答案 0 :(得分:2)

这是您的解决方案。你想做一个左连接而不是外连接:

import pandas as pd
f1 = pd.DataFrame({'A':[1,1,3], 'B':[2,2,3], 'C':[3,3,3]})
f2 = pd.DataFrame({'C':[3,1], 'D':[3,1], 'F':[1,1]})
f = f1.merge(f2, how='left', on='C')

输出:

   A  B  C  D  F
0  1  2  3  3  1
1  1  2  3  3  1
2  3  3  3  3  1

如果您想回写csv,请执行以下操作:

f.to_csv('yourfile.csv', index=False)