我试图基于两个数据帧彼此相等的两列进行合并。
代码如下:
>>> df.merge(df1, how='left', left_on=['Name', 'Age'], right_on=['Name', 'Age'], suffixes=('', '_@'))
Name Age
0 1 2
1 3 4
2 4 5
>>> df
Name Age
0 1 2
1 3 4
0 4 5
>>> df1
Name Age
0 5 6
1 3 4
0 4 7
我实际上对合并的期望是
Name Age Age_@
0 1 2 NaN
1 3 4 4.0
2 4 5 7.0
为什么熊猫认为此合并有所有三个匹配行?
答案 0 :(得分:1)
所以您是说merge
上的Name
对吗?
df.merge(df1, how='left', on='Name', suffixes=('', '_@'))
Out[120]:
Name Age Age_@
0 1 2 NaN
1 3 4 4.0
2 4 5 7.0
使用indicator
来查看输出
df.merge(df1, how='left', left_on=['Name', 'Age'], right_on=['Name', 'Age'], suffixes=('', '_@'),indicator=True)
Out[121]:
Name Age _merge
0 1 2 left_only
1 3 4 both
2 4 5 left_only
由于您df
和df1
具有相同的columns
并且所有columns
都已用作merge
键,所以没有其他{ {1}}指示它们是否在df中共享相同的项目(因为您使用了columns
,因此默认值为显示结果中所有剩余的项目)。