合并两个数据帧,以便添加额外的列

时间:2018-03-06 10:50:59

标签: 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     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')

但无法获得上述数据框。任何人都可以帮我解决这个问题吗?谢谢!

1 个答案:

答案 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