python - 如何合并多个不同长度的数据帧
问题描述
我想通过一个公共列合并多个数据框,以便所有不匹配的数据都有 NA。
D1: D2:
ID val1 val2 ID Target
1 x y 1 0
1 x y 1 1
1 a b
1 a c
D3: D4:
ID random new ID Targetnew
1 x y 1 1
1 x y 1 0
1 a b
1 a c
So the merge will become
ID val1 val2 Target Targetnew random new
1 x y 0 1 x y
1 x y 1 0 x y
1 a b NA NA a b
1 a c NA NA a c
解决方案
使用pd.concat()
和删除多个重复的列:
df = pd.concat([D1, D2, D4, D3], axis="columns")
df = df.loc[:, ~df.columns.duplicated()]
>>> df
ID val1 val2 Target Targetnew random new
0 1 x y 0.0 1.0 x y
1 1 x y 1.0 0.0 x y
2 1 a b NaN NaN a b
3 1 a c NaN NaN a c
推荐阅读
- java - 杰克逊两班问题
- c - 有人可以解释为什么 sizeof() 使用一元运算符返回这些值吗?
- windows - 可以使用 WinAPI 从 VSFlexGrid 窗口获取网格数据吗?
- browser - 在元浏览器层上进行 bitbake 时出错,Yocto zeus 的 gn-native 包
- php - 403 Forbidden when using specific parameter value in Rest URL
- vue.js - Vue可组合范围问题
- python - subprocess.Popen():在子进程执行期间更改标准错误
- java - 将测试添加到 java 类路径 vscode
- spring-boot - 如何确保按顺序执行弹簧石英作业?
- powershell - 从某些子文件夹中导入 PowerShell 模块