python - DataFrame 到 OrderedDicts 列表 - 如何保留订单?
问题描述
将 a 转换DataFrame
为OrderedDict
with 时to_dict
,into
我找不到让它保持记录顺序的方法。有没有办法在不循环记录和手动转换的情况下做到这一点?
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)
推荐阅读
- node.js - 如何使用来自 GCP Firestore 的大量数据在 Vue.js 数据表中工作
- r - 无法在 R 版本 4.1.0 上使用 timetk 将双向量转换为函数
- javascript - 这可以成为 Javascript 中高阶组件的示例吗?
- php - 如何从复选框创建一个数组
- ios - Flutter 音频播放器声音延迟
- ios - UINavigationController 过渡到 defaultBackground 显示白色边框
- salesforce - Salesforce 闪电文件上传
- c# - 日期时间的人性化器
- asp.net-core - 如何更改 asp.netcore 3.1 的默认登录路径
- node.js - TypeError:getDb 不是具有额外解构问题的函数