pd.concat合并DataFrame后列顺序错乱,疑关联此前的DataFrame键打印异常
pd.concat后列顺序错乱的原因及解决办法
核心原因
- 两个DataFrame的列原始顺序不一致,而
pd.concat默认会按列名字典序(比如字母a-z顺序)重新排列合并后的列,不会沿用任意一个输入df的列顺序。 - 那个无法正常打印的DataFrame可能存在列属性异常:比如列名包含隐藏字符、列名类型非字符串,或者列的元数据被意外修改,导致concat时无法识别其原有列顺序,进一步打乱结果。
解决办法
- 统一列顺序再合并:先把两个df的列对齐成同一顺序,比如以df_1的列顺序为准:
df_2 = df_2[df_1.columns] df = pd.concat([df_1, df_2]) - 检查异常df的列信息:先手动输出两个df的列列表,排查列名是否有差异:
若发现列名有大小写、空格、特殊字符的差异,先统一列名(比如print(df_1.columns.tolist()) print(df_2.columns.tolist())df_2.columns = df_1.columns)再合并。 - 强制指定合并后的列顺序:如果需要自定义列顺序,可以在合并后直接重排:
desired_order = ['列名1', '列名2', ...] # 按你想要的顺序列出来 df = df[desired_order]
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

