Python Pandas:无匹配列时按顺序拼接DataFrame
解决两个DataFrame按指定形式拼接的问题
要实现你要的拼接效果,核心是先给两个DataFrame补全对方的列(值为空),再按行拼接,步骤如下:
- 先创建示例DataFrame:
import pandas as pd df1 = pd.DataFrame({'A': [1, 3, 5], 'B': [2, 4, 6]}) df2 = pd.DataFrame({'C': [7, 9, 2, 4], 'D': [8, 10, 3, 5]})
- 给df1补充C、D列,值设为缺失值;给df2补充A、B列,同样设为缺失值,并调整列顺序和df1一致:
# 给df1添加C、D列 df1[['C', 'D']] = pd.NA # 给df2添加A、B列并调整列顺序 df2[['A', 'B']] = pd.NA df2 = df2[['A', 'B', 'C', 'D']]
- 用
pd.concat按行拼接两个处理后的DataFrame,同时重置索引:
result = pd.concat([df1, df2], ignore_index=True)
- 如果希望显示时缺失值为空字符串(和你预期的格式一致),可以用
fillna('')处理后打印:
print(result.fillna(''))
执行后输出结果如下:
A B C D 0 1 2 1 3 4 2 5 6 3 7 8 4 9 10 5 2 3 6 4 5
为什么直接用concat/join不行?
- 直接
pd.concat([df1, df2])会自动对齐列,但df1的C、D列和df2的A、B列会显示为NaN,若不处理显示格式,和你要的样式有差异; join方法是基于索引进行列合并,不是按行上下拼接,完全不符合你的需求。
内容的提问来源于stack exchange,提问作者zsh_18
相关产品推荐
相关产品推荐

