Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 合并两个数据帧,以便添加额外的列_Python_Pandas_Dataframe - Fatal编程技术网

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

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

我在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')

但无法获取上述所需的数据帧。有人能帮我解决这个问题吗?谢谢

我在下面检查了右合并是否正常

请不要投票/接受这个答案,因为上面有几十个重复的答案


我在下面检查了右合并是否正常

请不要投票/接受这个答案,因为上面有几十个重复的答案

它看起来像是
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