如何按列名排序DataFrame并合并多列不一致的Pandas数据集
合并列数/顺序不同的多个Pandas DataFrame的正确方法
直接可用的修改代码
import pandas as pd def read_the_files(): dfs = [] for i in range(1,9): # 读取CSV,跳过自动生成的冗余索引列,避免Unnamed开头的列 archivos_csv = pd.read_csv(f"DDFF_{i}.csv", index_col=False) # 可选:提前清理冗余列(如果读取后仍有Unnamed列) archivos_csv = archivos_csv.drop(columns=[col for col in archivos_csv.columns if col.startswith('Unnamed')]) dfs.append(archivos_csv) # 纵向合并,自动按列名对齐,缺失值填充NaN,重置行索引 df_unido = pd.concat(dfs, ignore_index=True) # 按列名字母顺序排序,让结果更整洁(可选) df_unido = df_unido.sort_index(axis=1) return df_unido result = read_the_files()
关键说明
自动列名对齐机制
Pandas的pd.concat()默认纵向合并(axis=0)时,会自动根据列名匹配不同DataFrame的列,某个文件没有的列会自动填充NaN,完全不需要手动提前调整列顺序。你之前遇到的“结果错误”,几乎都是因为CSV文件里带了冗余的索引列(比如Unnamed:0、Unnamed:0.1)——这些是之前保存DataFrame时没加index=False导致的,用index_col=False读取即可避免。按列名排序DataFrame
要按列名而非行值排序DataFrame,直接调用df.sort_index(axis=1):axis=1表示对列索引排序(按列名字母顺序)axis=0是默认值,对行索引排序
进阶优化建议
- 统一列名:如果不同文件里的同含义列名不同(比如A文件叫
province,B文件叫state),先手动映射列名再合并,比如archivos_csv.rename(columns={'state':'province'}, inplace=True) - 检查合并结果:用
print(df_unido.columns)查看所有列,用df_unido.info()统计每列的非空值数量,确认合并是否符合预期
- 统一列名:如果不同文件里的同含义列名不同(比如A文件叫
内容的提问来源于stack exchange,提问作者larrymvj
相关产品推荐
相关产品推荐

