我有一些多索引的大中型 Dataframe (见下面的示例代码),我想把它们转换成一个字典。我目前的方法相当简单,只需要多个stack()
,然后to_dict()
。这在小 Dataframe 上工作得很好,但是,随着索引级别的增加和 Dataframe 的变大,这种方法变得更慢。2有人知道更快的方法吗?
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
谢谢你的建议。
1条答案
按热度按时间deyfvvtc1#
输出: