【问题标题】:Replicate pd.concat using pd.merge使用 pd.merge 复制 pd.concat
【发布时间】:2020-07-13 12:51:51
【问题描述】:

是否可以使用pd.merge复制以下内容

a = pd.DataFrame(dict(x=[1,2], y=[5,5]))
b = pd.DataFrame(dict(x=[7,7], y=[12,13]))
pd.concat([a,b],axis=1)

哪个输出

   x  y  x   y
0  1  5  7  12
1  2  5  7  13

因为这将使我能够为列名添加后缀。

我希望以下工作:

pd.merge(a, b, how = 'outer',)

但这会返回:

   x   y
0  1   5
1  2   5
2  7  12
3  7  13

我希望输出是:

   x_l  y_l  x_r   y_r
0  1    5    7    12  
1  2    5    7    13  

【问题讨论】:

  • 你是专门找合并方法的吗?
  • 如果您想在索引上进行合并,可以使用left_index=True, right_index=True, suffixes=['_l, '_r']

标签: python pandas join merge


【解决方案1】:

你也可以使用df.join

a.join(b,lsuffix='_l',rsuffix='_r')

   x_l  y_l  x_r  y_r
0    1    5    7   12
1    2    5    7   13

【讨论】:

    【解决方案2】:

    IIUC 通过添加 keys 来修复您的 concat

    s=pd.concat([a,b], axis=1,keys=['l_','r_'])
    s.columns=s.columns.map(''.join)
    s
       l_x  l_y  r_x  r_y
    0    1    5    7   12
    1    2    5    7   13
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      • 2022-08-05
      • 2019-06-13
      • 1970-01-01
      相关资源
      最近更新 更多