Python 左合并不起作用

Python 左合并不起作用,python,pandas,Python,Pandas,当我合并两个简单的数据帧时,一切正常。但当我将相同的代码应用于实际数据帧时,合并无法正常工作: 我想在A列上使用左连接合并df1和df2 df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']}) df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3','A4','A5'],

当我合并两个简单的数据帧时,一切正常。但当我将相同的代码应用于实际数据帧时,合并无法正常工作:

我想在
A
列上使用左连接合并
df1
df2

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:


我检查了数据帧
结果
,我可以看到许多重复的行具有相同的
ID
。为什么?

请看这个稍加修改的示例(我在
df2
中修改了
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

df2
中的每个
A0
都有一行
A0
。这也是您的数据发生的情况。

可能您在df1或DF2中有dup ID。这就是问题的原因。
    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