python - 在不更改原始列名的情况下合并 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
我想把它们结合起来
- 合并在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
解决方案
执行 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
推荐阅读
- html - 添加了 Bootstrap 标头,现在组件正在复制
- timer - stm32 计时器 HAL_TIM_PerioidElapsedCallback() 未触发
- angularjs - 如何以角度创建具有另一个数组的子对象的数组
- arrays - VBA - 删除数组的重复值
- java - 简单的消费者阅读 __consumer_offsets 传递加密消息
- excel - Excel 将文本(2017 年 4 月 1 日)转换为日期
- ios - 在视图中发现未知约束
- reactjs - 重复的“a”标签取决于我从 api 响应中获得的数字
- r - 使用 ggplot2 使用正值低于和高于 0 的因子的唯一色带
- javascript - VSCode 是否应该报告编译中排除的 TS 文件的错误?