python - 从 OrderedDict : preserving columns order 列表构建 Pandas DataFrame

标签 python python-3.x pandas dataframe ordereddictionary

pd.__version__ = 0.18.0

假设您有一个 OrderedDict 的列表:

[OrderedDict([('SecurityCode', 'IDX.MSDENON'), ('DescriptionLong', 'MSCI Norway NR USD (EUR)'), ('DataSrc', 'BGN.COB'), ('Ticker', 'MSDENON Index'), ('LastRun', None)])]

如果您从默认构造函数(甚至使用 .from_dict() 方法)构建 DataFrame

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 repo 的 github 问题。这是默认构造函数中的一个“错误”,在任何情况下都会覆盖 OrderedDict 列顺序。已计划在下一个主要版本中进行更正(接受 0.18.2 的提交)

最佳答案

这确实是 DataFrame 构造函数的问题(参见我的编辑)。
我觉得 columns= option 解决方法比 hhbilly 提出的解决方案更好(语法上更容易理解)。

关于python - 从 OrderedDict : preserving columns order 列表构建 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37484738/

相关文章:

python - 如果2秒内找不到元素如何让驱动程序退出

python-3.x - Dask - dataframe.read_csv 无法识别正确的数据类型

python - 计算 pandas 数据框中唯一组合的数量

python - 如何对 pandas 数据框应用两个样本比例测试?

python - 我在数据框中有一个地址字段,如下所示

python - 从 MS Word 中提取数据

python - 如何在 sqlalchemy 中使用子查询添加行?

python - 在 Django ORM 中获取相关模型计数的有效方法

python - 文件未找到错误: [Errno 2] CGI, python3

python - Python 中的频率