我在pandas中有两个数据帧(df1和df2),除了第一列之外,它们都有不同的列。以下是数据框,例如:
df1
----------------
c1 c2 c3
----------------
1 x 10
2 y 16
3 z 20
df2
----------------
c1 c4 c5
----------------
1 xx 30
2 ym 46
2 zq 50
3 xa 60
3 ys 16
4 zm 20
我想合并两个df,以便生成的df如下所示:
----------------------------
c1 c2 c3 c4 c5
----------------------------
1 x 10 xx 30
2 y 16 ym 46
2 y 16 zq 50
3 z 20 xa 60
3 z 20 ys 16
4 zm 20
我用过
pd.merge(df1, df2, how='left')
pd.merge(df1, df2, how='right')
pd.merge(df1, df2, how='inner')
pd.merge(df1, df2, how='outer')
但无法获得上述数据框。任何人都可以帮我解决这个问题吗?谢谢!
答案 0 :(得分:1)
我在下面检查过合并正确合并。
请不要投票/接受这个答案,因为这里有几十个重复。
df1 = pd.DataFrame({'c1': {0: 1, 1: 2, 2: 3},
'c2': {0: 'x', 1: 'y', 2: 'z'},
'c3': {0: 10, 1: 16, 2: 20}})
df2 = pd.DataFrame({'c1': {0: 1, 1: 2, 2: 2, 3: 3, 4: 3, 5: 4},
'c4': {0: 'xx', 1: 'ym', 2: 'zq', 3: 'xa', 4: 'ys', 5: 'zm'},
'c5': {0: 30, 1: 46, 2: 50, 3: 60, 4: 16, 5: 20}})
result = pd.merge(df1, df2, how='right')
# c1 c2 c3 c4 c5
# 0 1 x 10.0 xx 30
# 1 2 y 16.0 ym 46
# 2 2 y 16.0 zq 50
# 3 3 z 20.0 xa 60
# 4 3 z 20.0 ys 16
# 5 4 NaN NaN zm 20