gpt4 book ai didi

python - 如何将嵌套字典转换为 pandas 数据框?

转载 作者:行者123 更新时间:2023-12-02 00:50:40 26 4
gpt4 key购买 nike

我有一个以下格式的字典“my_dict”:

{'l1':{'c1': {'a': 0, 'b': 1, 'c': 2},
'c2': {'a': 3, 'b': 4, 'c': 5}},
'l2':{'c1': {'a': 0, 'b': 1, 'c': 2},
'c2': {'a': 3, 'b': 4, 'c': 5}}
}

目前,我正在使用 pd.DataFrame.from_dict(my_dict, orient='index') 并获得如下所示的 df:

                             c2                           c1
l1 {u'a': 3, u'c': 5, u'b': 4} {u'a': 0, u'c': 2, u'b': 1}
l2 {u'a': 3, u'c': 5, u'b': 4} {u'a': 0, u'c': 2, u'b': 1}

但是,我想要的是 l1/l2 和 c2/c3 作为索引,a/b/c 作为列。
像这样的事情:

       a   b   c
l1 c1 0 1 2
c2 3 4 5
l2 c1 0 1 2
c2 3 4 5

最好的方法是什么?

最佳答案

考虑字典理解来构建带有元组键的字典。然后,使用 pandas' MultiIndex.from_tuples 。下面的ast用于从字符串重建原始字典(忽略最后的步骤)。

import pandas as pd
import ast

origDict = ast.literal_eval("""
{'l1':{'c1': {'a': 0, 'b': 1, 'c': 2},
'c2': {'a': 3, 'b': 4, 'c': 5}},
'l2':{'c1': {'a': 0, 'b': 1, 'c': 2},
'c2': {'a': 3, 'b': 4, 'c': 5}}
}""")

# DICTIONARY COMPREHENSION
newdict = {(k1, k2):v2 for k1,v1 in origDict.items() \
for k2,v2 in origDict[k1].items()}
print(newdict)
# {('l1', 'c2'): {'c': 5, 'a': 3, 'b': 4},
# ('l2', 'c1'): {'c': 2, 'a': 0, 'b': 1},
# ('l1', 'c1'): {'c': 2, 'a': 0, 'b': 1},
# ('l2', 'c2'): {'c': 5, 'a': 3, 'b': 4}}

# DATA FRAME ASSIGNMENT
df = pd.DataFrame([newdict[i] for i in sorted(newdict)],
index=pd.MultiIndex.from_tuples([i for i in sorted(newdict.keys())]))
print(df)
# a b c
# l1 c1 0 1 2
# c2 3 4 5
# l2 c1 0 1 2
# c2 3 4 5

关于python - 如何将嵌套字典转换为 pandas 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40638542/

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