python - 在不更改原始列名的情况下合并 pandas DataFrame

标签 python pandas dataframe join merge

我想在某些条件下组合 2 个数据帧。我想我需要 pd.merge 和 pd.concat 的聚合特性,我通读了所有示例 here但仍然没有找到解决我问题的信息。

左:

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

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

  • 合并到 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

最佳答案

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

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

关于python - 在不更改原始列名的情况下合并 pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54259619/

相关文章:

python - Pandas Dataframe to_csv 格式输出

r - 如何提取 10 个字符数字的前 6 位数字并将其转换为 as.Date?

python - 在时间序列数据中创建新的 sumproduct 列

python - 向量化多个 pandas 列的加法

python - 创建一个函数来标准化分类变量 (python)

python - Pandas - 如何使用带有索引的字典对列的行进行排序

python - 第一列数据框中每两个元素的共同元素

python - 在 Django 中登录管理员

Python 目录显示在 Finder、Explorer、Dolphin 等中...(跨平台)

python - 将文件夹的文件夹中的文件重命名为其父文件夹?