首页 > 解决方案 > 在不更改原始列名的情况下合并 pandas DataFrames

问题描述

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

剩下:

key1  key2  valueX  valueY
 A    a1     1       4
 B    b1     2       5
 C    c1     3       6

正确的:

key1  key2  valueX  valueY
 A    a1     7       10
 B    b2     8       11
 C    c1     9       12

我想把它们结合起来

如下所示:

    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

标签: pythonpandasdataframejoinmerge

解决方案


执行 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

推荐阅读