You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Pandas对DataFrame列按字母排序并保持指定列顺序

解决Pandas导出CSV列顺序不符的问题

这个问题其实是因为早期Python版本里的普通字典是无序的,当你用它创建DataFrame时,pandas会按照字典键的哈希顺序(而非你编写的顺序)排列列,最终导致导出的CSV列序和预期不符。即使是Python 3.7+(字典默认有序),有时候也会因为某些场景出现列序混乱,这里给你几个稳妥的解决办法:

方法1:使用有序字典(OrderedDict)

通过collections.OrderedDict来定义数据,它会严格保留你编写的键顺序,这样创建的DataFrame列序就完全符合预期:

import pandas as pd
from collections import OrderedDict

holders = pd.DataFrame(OrderedDict({
    "Rank": rank,
    "Address": address,
    "Quantity": quantity,
    "Percentage": percent
}))
holders.to_csv('holders.csv', index=False, encoding='utf-8')

方法2:创建DataFrame时显式指定列顺序

直接在pd.DataFrame()中通过columns参数强制指定列的排列顺序,不管字典本身的顺序如何,DataFrame都会按照你给定的顺序生成列:

import pandas as pd

holders = pd.DataFrame({
    "Rank": rank,
    "Address": address,
    "Quantity": quantity,
    "Percentage": percent
}, columns=["Rank", "Address", "Quantity", "Percentage"])

holders.to_csv('holders.csv', index=False, encoding='utf-8')

方法3:导出CSV时指定列顺序

如果不想修改DataFrame的创建逻辑,也可以在to_csv()方法中通过columns参数指定导出的列顺序,这样即使DataFrame内部列序不对,导出的CSV也会按要求排列:

import pandas as pd

holders = pd.DataFrame({
    "Rank": rank,
    "Address": address,
    "Quantity": quantity,
    "Percentage": percent
})

holders.to_csv('holders.csv', index=False, encoding='utf-8', columns=["Rank", "Address", "Quantity", "Percentage"])

个人更推荐方法2或3,它们不需要额外导入模块,而且在不同Python版本中都能稳定生效,避免版本兼容问题。

内容的提问来源于stack exchange,提问作者user9701233

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:15:42