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/

10-12 16:41