python - 堆叠大型多索引 df 然后转换为 dict 的更快替代方案
问题描述
我有一些多索引的中大型数据框(例如,请参见下面的示例代码),我想将它们转换为字典。我目前的方法相当简单,只需要多个stack()
then to_dict()
。然而,这在小型数据帧上工作得很好,随着索引级别的增加和数据帧变得更大,这种方法变得慢得多。有谁知道更快的方法来做到这一点?
idx = pd.MultiIndex.from_product([['crop1', 'crop2', 'crop3','crop4', 'crop5', 'crop6','crop7', 'crop8', 'crop9','crop10'],
['crop1', 'crop2', 'crop3','crop4', 'crop5', 'crop6','crop7', 'crop8', 'crop9','crop10'],
['crop1', 'crop2', 'crop3','crop4', 'crop5', 'crop6','crop7', 'crop8', 'crop9','crop10'],
['crop1', 'crop2', 'crop3','crop4', 'crop5', 'crop6','crop7', 'crop8', 'crop9','crop10']])
cols = pd.MultiIndex.from_product([['Zara', 'LV', 'Roots'],
['p1', 'p2', 'p3','p4', 'p5', 'p6'],
list(range(17))])
df = pd.DataFrame('-', idx, cols)
df = df.stack([0,1,2]).to_dict()
注意 - 我的最终字典应该将当前索引和当前列标题作为键,即
('crop1', 'crop1', 'crop1', 'crop1', 'LV', 'p1', 0):value
感谢您的任何建议。
解决方案
推荐阅读
- android - 德尔福安卓。如何制作具有全文搜索自动完成支持的组合框?
- python - python如何在导入包中获取正在运行的脚本的文件名
- angular - 获取 Observable 返回的值
在 Angular 打字稿(Firebase)中 - c - 如何访问指针数组中的指针所指向的值?
- javascript - 资源加载后启动three.js
- javascript - 如何使用 GET 请求重新加载页面并保持滚动位置?
- android - 向用户显示消费者密钥 [PARSE SERVER]
- node.js - 为什么 process.nextTick() 被调用了 3 次?
- sql - sql - 计算平均值时的结果小数精度和比例
- docker - 待处理的詹金斯没有标签 docker-slave