当我合并两个简单的数据帧时,一切正常。但是,当我将相同的代码应用于我的真实数据帧时,合并无法正常工作:
我想使用左连接在df1
列合并df2
和A
。
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3','A4','A5'],
'C': ['C0', 'C1', 'C2', 'C3','C4','C5'],
'D': ['D0', 'D1', 'D2', 'D3','D4','A5']})
result = pd.merge(df1, df2[["A","C"]], how='left', on='A')
在这种情况下,结果是正确的(result
中的行数与df1
相同。)
但是,当我在实际数据上运行相同的代码时,result
中的行数远远大于df1
,并且与df2
更相似。
result = pd.merge(df1, df2[["ID","EVENT"]], how='left', on='ID')
字段ID
的类型为String(astype(str)
)。
这可能是什么原因?我不能在这里发布真实的数据集,但也许根据我的解释可能会做一些指示。感谢。
UDPATE:
我检查了数据框result
,我可以看到许多重复的行具有相同的ID
。为什么呢?
答案 0 :(得分:1)
请参阅此略微修改的示例(我在A
中修改了df2
列中的最后两个值):
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3','A0','A0'],
'C': ['C0', 'C1', 'C2', 'C3','C4','C5'],
'D': ['D0', 'D1', 'D2', 'D3','D4','A5']})
result = pd.merge(df1, df2[["A","C"]], how='left', on='A')
输出:
A B C
0 A0 B0 C0
1 A0 B0 C4
2 A0 B0 C5
3 A1 B1 C1
4 A2 B2 C2
5 A3 B3 C3
A0
中的每个A0
都有一个df2
行。这也是您的数据发生的事情。