pd .__ version__ = 0.18.0
假设您有一个OrderedDict列表:
[OrderedDict([('SecurityCode', 'IDX.MSDENON'), ('DescriptionLong', 'MSCI Norway NR USD (EUR)'), ('DataSrc', 'BGN.COB'), ('Ticker', 'MSDENON Index'), ('LastRun', None)])]
如果从默认构造函数构造DataFrame(甚至使用.from_dict()方法)
df = pd.DataFrame(mylist)
它不保留列顺序:
DataSrc DescriptionLong LastRun SecurityCode Ticker
0 BGN.COB MSCI Norway NR USD (EUR) None IDX.MSDENON MSDENON Index
而:
df = pd.DataFrame(data, columns=data[0].keys())
SecurityCode DescriptionLong DataSrc Ticker LastRun
0 IDX.MSDENON MSCI Norway NR USD (EUR) BGN.COB MSDENON Index None
保留列顺序。
我在StackOverflow上读到,此类错误出现在0.11中,但是恕我直言,我们不必在默认构造函数中指定columns =选项。我是否缺少某些内容,或者是需要报告的错误?
编辑:
有关pydata / pandas回购的github问题已创建并接受。这是默认构造函数中的“错误”,在任何情况下都将覆盖OrderedDict列顺序。已计划对下一个主要版本进行更正(接受0.18.2的提交)
最佳答案
这确实是DataFrame构造函数上的问题(请参见我的编辑)。
我觉得column = option解决方法比高效建议的解决方案更好(语法上更容易理解)。
关于python - 从OrderedDict列表中构建Pandas DataFrame:保留列顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37484738/