Python3.6.3中创建pd.DataFrame时如何保持列定义顺序?
保持DataFrame列定义顺序的解决方案
在Python 3.6.3中,标准字典已经支持保留插入顺序,但如果你的pandas版本低于0.23.0,它默认不会利用这个特性来维持DataFrame的列顺序。要确保列的顺序和你定义时完全一致,这里有两种可靠的方法:
方法1:显式指定columns参数(最稳妥)
这是不受pandas版本限制的通用方案,直接在创建DataFrame时明确列的顺序:
import pandas as pd # 按你想要的顺序定义数据字典 data_dict = { 'GroupId': [101, 102, 103], 'Name': ['Anna', 'Ben', 'Claire'], 'Score': [85, 92, 78] } # 通过columns参数强制指定列顺序,和字典定义顺序一致 df = pd.DataFrame(data_dict, columns=['GroupId', 'Name', 'Score']) # 验证顺序 print(df) df.info()
这样不管你用的pandas版本是新是旧,输出的列顺序都会严格遵循你指定的GroupId→Name→Score的顺序。
方法2:依赖Python 3.6+字典的有序性(需pandas≥0.23.0)
如果你的pandas版本在0.23.0及以上,它已经适配了Python 3.6+的有序字典特性,直接创建DataFrame就能自动保留字典的插入顺序:
import pandas as pd data_dict = { 'GroupId': [101, 102, 103], 'Name': ['Anna', 'Ben', 'Claire'], 'Score': [85, 92, 78] } df = pd.DataFrame(data_dict) # 此时df的列顺序会和字典定义的一致 print(df) df.info()
不过这种方法依赖pandas版本,所以更推荐第一种显式指定的方式,避免因为版本差异导致的顺序问题。
内容的提问来源于stack exchange,提问作者bogdanCsn
相关产品推荐
相关产品推荐

