低版本Pandas下pd.concat(sort=False)参数不兼容的解决方案
低版本 Pandas 禁用 concat 列自动排序的代码解决方案
sort 参数是 Pandas 0.23.0 版本才新增的配置项,低于该版本的运行环境无法识别该参数,以下两种方案都可以在不升级 Pandas 的前提下,避免合并结果的列被自动按字母顺序排序:
方案1:合并后按预期顺序重排列
适用于待合并的多个 DataFrame 列完全一致,或你需要的列顺序和首个 DataFrame 列顺序一致的场景:
# 先执行无 sort 参数的合并 new_df = pd.concat([df1, df2, df3]) # 按照首个 DataFrame 的列顺序重排合并结果的列 new_df = new_df[df1.columns]
方案2:合并前统一所有 DataFrame 的列顺序
适用于多个待合并 DataFrame 列存在差异的场景,可自定义最终输出的列顺序:
# 按你需要的顺序收集所有列,示例优先保留第一个 DataFrame 的列顺序,新增列追加在末尾 custom_cols = [] for df in [df1, df2, df3]: for col in df.columns: if col not in custom_cols: custom_cols.append(col) # 给所有待合并 DataFrame 补全缺失列,统一列顺序 df1_aligned = df1.reindex(columns=custom_cols) df2_aligned = df2.reindex(columns=custom_cols) df3_aligned = df3.reindex(columns=custom_cols) # 合并后列顺序和自定义顺序完全一致,不会被自动排序 new_df = pd.concat([df1_aligned, df2_aligned, df3_aligned])
内容的提问来源于stack exchange,提问作者SlowlyLearning
相关产品推荐
相关产品推荐

