gpt4 book ai didi

Pandas 多索引数据框到嵌套字典

转载 作者:行者123 更新时间:2023-12-03 13:55:14 24 4
gpt4 key购买 nike

假设我有以下数据框

df = pd.DataFrame({0: {('A', 'a'): 1, ('A', 'b'): 6, ('B', 'a'): 2, ('B', 'b'): 7},
1: {('A', 'a'): 2, ('A', 'b'): 7, ('B', 'a'): 3, ('B', 'b'): 8},
2: {('A', 'a'): 3, ('A', 'b'): 8, ('B', 'a'): 4, ('B', 'b'): 9},
3: {('A', 'a'): 4, ('A', 'b'): 9, ('B', 'a'): 5, ('B', 'b'): 1},
4: {('A', 'a'): 5, ('A', 'b'): 1, ('B', 'a'): 6, ('B', 'b'): 2}})

看起来是这样的:
     0  1  2  3  4
A a 1 2 3 4 5
b 6 7 8 9 1
B a 2 3 4 5 6
b 7 8 9 1 2

当我通过 to_dict 将其转换为字典时(不管堆叠,拆开),我得到一个字典,其键是元组:
df.transpose().to_dict()

{('A', 'a'): {0: 1, 1: 2, 2: 3, 3: 4, 4: 5},
('A', 'b'): {0: 6, 1: 7, 2: 8, 3: 9, 4: 1},
('B', 'a'): {0: 2, 1: 3, 2: 4, 3: 5, 4: 6},
('B', 'b'): {0: 7, 1: 8, 2: 9, 3: 1, 4: 2}}

我想要的是这样的嵌套字典:
{'A':{'a': {0: 1, 1:2, 2:3, 3:4, 4:5}, 'b':{0:6, 1:7, 2:8, 3:9,4:1}...

最佳答案

您可以使用字典理解来遍历外部级别(值“A”和“B”)并使用 xs按这些级别对帧进行切片的方法。

{level: df.xs(level).to_dict('index') for level in df.index.levels[0]}

{'A': {'a': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5},
'b': {0: 6, 1: 7, 2: 8, 3: 9, 4: 1}},
'B': {'a': {0: 2, 1: 3, 2: 4, 3: 5, 4: 6},
'b': {0: 7, 1: 8, 2: 9, 3: 1, 4: 2}}}

关于Pandas 多索引数据框到嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42150769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com