我想在某些条件下组合 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/