从字典创建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
相关产品推荐
相关产品推荐

