为什么我的pandas DataFrame没有自动按列名排序?
问题原因解答
这个差异是pandas版本迭代导致的默认行为变更,并非书籍描述错误,书籍内容对应其出版时的主流pandas版本特性。
- 书籍《Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython 2nd Edition》2017年出版时,配套的pandas版本为0.20.x/0.21.x系列,当时Python 3.5及更早版本的原生字典为无序结构,pandas构造DataFrame时默认会对传入的列名按字典序排序,保证不同环境下的输出一致性。
- 后续两个核心变更导致你本地运行的效果和书中不同:
- Python 3.6版本开始,原生字典默认保留插入顺序,且该特性在Python 3.7被纳入正式语法规范
- pandas从1.0.0版本(2020年发布)开始,DataFrame构造函数的
sort参数默认值从True改为False,默认会优先保留传入列的插入顺序,不再自动排序
- 如果需要复刻书中的自动排序效果,可以在构造DataFrame时手动指定
sort=True参数,示例如下:import pandas as pd df = pd.DataFrame(你的数据, sort=True)
内容的提问来源于stack exchange,提问作者user16627746
相关产品推荐
相关产品推荐

