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

从字典创建Pandas DataFrame时如何维持列的原始顺序?

保持Pandas DataFrame列的原始定义顺序

这个问题的根源在于早期Python版本(3.7之前)的字典是无序的,Pandas在创建DataFrame时会默认按照字典键的字母顺序排列列,所以才会出现你看到的列顺序被打乱的情况。要保持你想要的Day, Visitors, Bounce Rate顺序,有几种实用的解决方法:

方法1:创建DataFrame时指定columns参数

这是最直接且通用的方法,不管你用什么Python版本都能生效。在pd.DataFrame()里明确传入columns参数,把你期望的列顺序列出来即可:

import pandas as pd
web_stats = {'Day':[1,2,3,4,5,6], 'Visitors':[43,34,65,56,29,76], 'Bounce Rate':[65,67,78,65,45,52]}
# 明确指定列顺序
df = pd.DataFrame(web_stats, columns=['Day', 'Visitors', 'Bounce Rate'])

生成的结果会严格按照你指定的顺序排列:

Day  Visitors  Bounce Rate
0    1        43           65
1    2        34           67
2    3        65           78
3    4        56           65
4    5        29           45
5    6        76           52

方法2:使用有序字典(针对Python 3.6及以下版本)

如果你的Python版本低于3.7,可以用collections.OrderedDict来创建有序字典,它会严格保留键的插入顺序:

from collections import OrderedDict
import pandas as pd

# 用OrderedDict定义数据,确保顺序
web_stats = OrderedDict([
    ('Day', [1,2,3,4,5,6]),
    ('Visitors', [43,34,65,56,29,76]),
    ('Bounce Rate', [65,67,78,65,45,52])
])
df = pd.DataFrame(web_stats)

注意:Python 3.7及以上版本的普通字典已经默认保留插入顺序了,所以如果你的环境是3.7+,直接用普通字典创建DataFrame就会保持你定义的列顺序,不需要额外用OrderedDict。

方法3:创建后重新排列列

如果已经创建好了DataFrame,也可以通过索引的方式重新指定列顺序:

# 重新排列列
df = df[['Day', 'Visitors', 'Bounce Rate']]

这种方法适合需要调整已有DataFrame列顺序的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:20:34