python - Python表合并具有相同名称的列
问题描述
我正在从网站中提取数据。每条记录有 100 多个数据列。根据可用数据,每条记录可以有不同数量的数据列,但所有不同的列都有一个唯一的名称,因此可以匹配它们,但它们的顺序不会相同,因为列数会有所不同。总列数未知。
假设每条记录有 4 个数据表,都具有相同的索引。
如何将记录合并到第一个数据表中,同时将每个数据点放入其列并在需要时添加新列。
例子:
表格1:
| id | A | B | C |
| 0 | 1 | 2 | 5 |
| 1 | 2 | 3 | nan |
表 2:
| id | C | D |
| 1 | 5 | 6 |
| 2 | 7 | 8 |
结果:
| Id | A | B | C | D |
| 0 | 1 | 2 | 5 | 6 |
| 1 | 2 | 3 | nan | nan |
| 2 | nan | nan | 7 | 8 |
注意: - nan 是空白值 - 合并将始终为空白 + 值 - 在这种情况下,C 被合并,D 被添加。我可能有 10 列需要合并。- 我不是要代码,只是指导如何在 python 中完成这个
尝试使用 pandas 加入和合并,但它们不是为这个用例设计的。
解决方案
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2], 'B': [2, 3], 'C': [5, None]})
df2 = pd.DataFrame({'C': [5, 7], 'D': [6, 8]})
common_columns = list(df1.columns & df2.columns)
df1.merge(df2, on=common_columns, how='outer')
输出:
A B C D
0 1.0 2.0 5.0 6.0
1 2.0 3.0 NaN NaN
2 NaN NaN 7.0 8.0
推荐阅读
- java - 使用 HTTP 调用启动 Spring 状态机
- node.js - MERN 堆栈:值“NaN”的数字转换失败
- reactjs - 使单元测试等待异步获取填充的数据
- bootstrap-4 - Bootstrap / Vue.js - 折叠
- bi-publisher - 如何使用 BI/XML Publisher 以 Excel 会计格式显示金额?
- angular - 我无法集成 paymetric iframe、支付网关。我面临一个错误“位置 0 的 json 意外令牌 u”
- javascript - 为什么这个 scrollLeft JS 函数不能在我的本地 wordpress 网站上运行?
- factory - 我们可以删除以下工厂类中的条件吗?
- linux - 是否有跨平台的方法来设置使用 cmake 生成的项目的构建类型?
- c# - 如何使用 Entity Framework Core 数据迁移将种子数据添加到现有种子数据