合并 pandas DataFrame 而不更改原始列名称

Ali*_*ice 3 python merge join dataframe pandas

我想将 2 个数据框与某些条件结合起来。我认为我需要 pd.merge 和 pd.concat 的聚合功能,我通读了这里的所有示例,但仍然没有找到解决我的问题的信息。

左边:

key1  key2  valueX  valueY
 A    a1     1       4
 B    b1     2       5
 C    c1     3       6
Run Code Online (Sandbox Code Playgroud)

正确的:

key1  key2  valueX  valueY
 A    a1     7       10
 B    b2     8       11
 C    c1     9       12
Run Code Online (Sandbox Code Playgroud)

我想将它们结合起来,所以它是

  • 合并到 axis=1 上的 2 个键上
  • 外连接
  • 保持 ValueX、valueY 名称不变,只需在右侧添加具有相同列名称的新列

像下面这样:

    key1  key2  valueX  valueY  valueX  valueY
     A    a1     1       4       7       10
     B    b1     2       5      nan      nan
     B    b2    nan     nan      8       11
     C    c1     3       6       9       12
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 6

使用 执行 FULL OUTER JOIN merge,然后删除后缀。

u = left.merge(right, on=['key1', 'key2'], suffixes=('', '__2'), how='outer') 
u.columns = u.columns.str.replace('__2', '')

u
  key1 key2  valueX  valueY  valueX  valueY
0    A   a1     1.0     4.0     7.0    10.0
1    B   b1     2.0     5.0     NaN     NaN
2    C   c1     3.0     6.0     9.0    12.0
3    B   b2     NaN     NaN     8.0    11.0
Run Code Online (Sandbox Code Playgroud)