嗨,我知道之前已经回答了这个问题,但我得到的结果很奇怪。所以我希望能解释一下我的方法有什么不对。
我有2个csv文件
A,B,C
1,2,3
1,2,3
3,3,3
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')
答案 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)