DataFrame存在重复列名时如何将同名列按行合并 空值填充NA
基于Pandas的实现方法
核心思路
- 提取DataFrame的所有唯一列名
- 对每个唯一列名,取出所有对应同名列的数据,拼接为长序列
- 将所有列的长序列合并为新DataFrame,长度不足的位置自动填充NA
可运行代码示例
import pandas as pd import numpy as np # 示例:构造有重复列名的测试DataFrame,可替换为你自己的数据集 df = pd.DataFrame( [[1,2,3,4],[5,6,7,8],[9,10,11,12]], columns=['A','B','A','B'] ) # 第一步:获取所有去重后的列名 unique_cols = df.columns.unique() res_dict = {} for col in unique_cols: # 取出当前列名对应的所有列,按列优先顺序展平为一维序列 col_values = df.loc[:, col].values.flatten(order='F') res_dict[col] = pd.Series(col_values) # 合并所有列,长度不足的位置自动补空 result = pd.DataFrame(res_dict) # 统一将空值替换为NA格式 result = result.fillna(pd.NA)
代码说明
order='F'指定按列优先顺序展平同名列数据,即先取第一组同名列的所有行数据,再追加下一组同名列的所有行数据,符合拼接需求;如果需要按行优先顺序拼接可改为order='C'- 方案原生支持列数60-70的数据集规模,无需额外性能优化即可正常运行
- 若你的数据集存在非数值类型的列,该逻辑同样兼容,不需要额外修改
内容的提问来源于stack exchange,提问作者ken
相关产品推荐
相关产品推荐

