使用df.add()合并数据后列顺序改变,如何控制或调整?
解决DataFrame.add()合并后列排序问题
使用.add()合并列名一致的多个DataFrame时,列会默认按字母升序排列——这是因为方法内部对齐数据时会自动排序列名。你有两种处理方式:
方式一:合并后手动指定列顺序
这是你已经想到的方案,直接用原始列的顺序重新索引汇总DataFrame,简单高效:
new_df = sum_df[['C', 'A', 'D', 'B']]
方式二:合并过程中保留原始列顺序
如果不想事后调整,可以换用pd.concat先合并所有DataFrame再求和,concat默认会保留原始列的顺序:
# 假设你的DataFrame都存放在dfs列表中 dfs = [df1, df2, df3] # 合并后按索引分组求和 sum_df = pd.concat(dfs).groupby(level=0).sum()
或者在循环使用.add()时,每次操作后都强制保留原始列顺序:
original_cols = df1.columns # 从第一个DataFrame获取原始列顺序 sum_df = df1.copy() for df in dfs[1:]: sum_df = sum_df.add(df, fill_value=0)[original_cols]
内容的提问来源于stack exchange,提问作者J H
相关产品推荐
相关产品推荐

