繁体   English   中英

DataFrame to List of OrderedDicts - 如何保持顺序?

[英]DataFrame to List of OrderedDicts - how to preserve order?

一个转换时DataFrameOrderedDictto_dictinto我不能找到一个办法把它保持的记录的顺序。 有没有办法在不循环记录和手动转换的情况下做到这一点?

DataFrame([{"B": 1, "A": 2}]).to_dict(orient='records', into=OrderedDict)
> [OrderedDict([('A', 2), ('B', 1)])]

更新:无法在我的调试器之外重现。 我认为python的 pprint 模块正在丢弃订单。 这也是我第一次开始进入这个兔子洞的方式 - 我没有注意到我的订购问题是在我将数据打印到控制台后才开始的。 我认为 VS Code python 插件也在显示调试控制台输出之前以某种方式使用了 pprint,这再次丢弃了顺序。 我会结束这个问题,非常抱歉浪费了时间!

成功的关键是传递一个初始化的实例,而不仅仅是一个类。

将您的代码更改为:

from collections import OrderedDict

dd = OrderedDict()
result = df.to_dict('records', into=dd)

实际上,您可以使用defaultdict获得几乎相同的结果(也从collections导入):

dd = defaultdict(list)
result = df.to_dict('records', into=dd)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM