Python 合并两个数据帧,以便添加额外的列
我在pandas中有两个数据帧(df1和df2),除了第一列之外,它们都有不同的列。以下是数据帧示例:Python 合并两个数据帧,以便添加额外的列,python,pandas,dataframe,Python,Pandas,Dataframe,我在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
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')
但无法获取上述所需的数据帧。有人能帮我解决这个问题吗?谢谢 我在下面检查了右合并是否正常 请不要投票/接受这个答案,因为上面有几十个重复的答案
我在下面检查了右合并是否正常 请不要投票/接受这个答案,因为上面有几十个重复的答案 它看起来像是
pd.merge(df1,df2,how='right')
完美地工作。有什么问题吗?或者,您可能希望尝试df1.merge(df2,on='c1',how='right')
。检查您的列是否具有相同的数据类型。它看起来像是pd.merge(df1,df2,how='right')
工作得很好。有什么问题吗?或者,您可能希望尝试df1.merge(df2,on='c1',how='right')
。检查列是否具有相同的数据类型。
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