如何拼接列名部分重叠、列数不同的DataFrame,缺失列填NaN?
解决方案
你需要使用pandas.concat()并保持默认的axis=0(上下拼接方向),传入实际的DataFrame对象而非字符串名称,配合ignore_index=True重置索引,就能自动对齐相同列名,额外列填充NaN。
核心代码
import pandas as pd # 构造示例DataFrame df1 = pd.DataFrame({'Column A': ['ID 1', 'ID 2'], 'Column B': ['Cell 2', 'Cell 4']}) df2 = pd.DataFrame({'Column A': ['ID 3', 'ID 4'], 'Column B': ['Cell 2', 'Cell 4'], 'ColumnC': ['info', 'info']}) # 执行上下拼接 result_df = pd.concat([df1, df2], ignore_index=True) print(result_df)
输出结果
| Column A | Column B | ColumnC | |
|---|---|---|---|
| 0 | ID 1 | Cell 2 | NaN |
| 1 | ID 2 | Cell 4 | NaN |
| 2 | ID 3 | Cell 2 | info |
| 3 | ID 4 | Cell 4 | info |
关键说明
- 你之前错误传入了字符串
['df1','df2'],需替换为实际的DataFrame变量[df1, df2] axis=0是默认参数,无需额外指定,它会按行方向堆叠数据ignore_index=True会重置结果的索引,避免出现重复的行索引concat会自动对齐所有列名,仅存在于单个DataFrame的列,会用NaN填充缺失值
内容的提问来源于stack exchange,提问作者Arancium
相关产品推荐
相关产品推荐

