python-3.x - Pandas - 将具有不同名称和列数的数据帧堆叠在一起
问题描述
我正在尝试从两个完全不同的数据帧创建一个 csv 日志,所以我不能简单地连接/合并。第一个数据帧只是一行数据点,其列比第二个数据帧多,而第二个数据帧有一堆数据点行。我还想在它们之间添加一个空白行以增加清晰度。有没有办法将它们组合在一起,使第二个数据帧的空白单元格获得 NaN 值?
考虑下面的简化示例:
数据框 1:
Col A Col B Col C Col D Col E
0 XYZ 452 GHJ 089 IUT
数据框 2:
Data1 Data2 Data3 Data4
0 1234 4567 7890 6543
1 8765 4565 8767 0987
..
n 4387 0943 4598 3212
输出:
Col A Col B Col C Col D Col E
0 XYZ 452 GHJ 089 IUT
1 NaN NaN NaN NaN NaN
2 1234 4567 7890 6543 NaN
3 8765 4565 8767 0987 NaN
..
n 4387 0943 4598 3212 NaN
解决方案
针对您的需求。
- 将第二个数据框的列混搭为与第一个宽的列相同,这样您就不会变宽
- 然后他们插入一个新的数据帧,在第一个数据帧的第一列
concat()
之间插入一个虚拟数据帧np.nan
import numpy as np
df1 = pd.DataFrame({"Col A":["XYZ"],"Col B":[452],"Col C":[" GHJ"],"Col D":[89],"Col E":[" IUT"]})
df2 = pd.DataFrame({"Data1":[1234,8765,4387],"Data2":[4567,4565,943],"Data3":[7890,8767,4598],"Data4":[6543,987,3212]})
df2.columns=[df1.columns[i] for i,c in enumerate(df2.columns) if i<len(df1.columns)]
pd.concat([
df1,
pd.DataFrame({df1.columns[0]:[np.nan]}),
df2
])
输出
Col A Col B Col C Col D Col E
XYZ 452.0 GHJ 89.0 IUT
NaN NaN NaN NaN NaN
1234 4567.0 7890 6543.0 NaN
8765 4565.0 8767 987.0 NaN
4387 943.0 4598 3212.0 NaN
推荐阅读
- java - 使用 javax.accessibility 与来自另一个 JVM 的应用程序交互
- java - 如何调试错误:java.lang.AssertionError: No value at JSON path "$.name"
- java - Android 4.2 - 创建新项目并尝试导入相同的给出 - 空指针异常
- angular - 如何在组件初始化之前在方法 suscribe() 中执行代码
- flutter - 为什么我不知道“使用通用链接”进入应用程序的链接是什么?在 ios 上使用颤振
- python - 如何替换列中拼写错误的单词
- ios - 归档应用程序后按 UITextField 时不显示剪切、复制、粘贴菜单
- docker - 指定构建时 Docker compose force pull
- python - 为什么要创建 desktop.ini 文件?
- android - 如何为 AppAuth 库 android studio 创建重定向 url?