python - 如何从带有列表的嵌套字典构建 MultiIndex Pandas DataFrame

标签 python pandas dictionary dataframe multi-index

我有以下字典。

d= {'key1': {'sub-key1': ['a','b','c','d','e']},
    'key2': {'sub-key2': ['1','2','3','5','8','9','10']}}

this的帮助下发布后,我成功地将这本字典转换为 DataFrame。

df = pd.DataFrame.from_dict({(i,j): d[i][j] 
                            for i in d.keys() 
                            for j in d[i].keys()},
                            orient='index')

但是,我的 DataFrame 采用以下形式:

                  0  1  2  3  4     5     6
(key1, sub-key1)  a  b  c  d  e  None  None
(key2, sub-key2)  1  2  3  5  8     9    10

我可以使用元组作为索引值,但我认为使用多级 DataFrame 会更好。发布如this one帮助我分两步创建它,但是我很难一步完成(即从初始创建开始),因为字典中的列表以及之后的元组增加了一定程度的复杂性。

最佳答案

我认为你很接近,因为可以使用 MultiIndex MultiIndex.from_tuples方法:

d = {(i,j): d[i][j] 
       for i in d.keys() 
       for j in d[i].keys()}

mux = pd.MultiIndex.from_tuples(d.keys())
df = pd.DataFrame(list(d.values()), index=mux)
print (df)
               0  1  2  3  4     5     6
key1 sub-key1  a  b  c  d  e  None  None
key2 sub-key2  1  2  3  5  8     9    10

谢谢,Zero另一种解决方案:

df = pd.DataFrame.from_dict({(i,j): d[i][j] 
                            for i in d.keys() 
                            for j in d[i].keys()},
                            orient='index')

df.index = pd.MultiIndex.from_tuples(df.index)
print (df)
               0  1  2  3  4     5     6
key1 sub-key1  a  b  c  d  e  None  None
key2 sub-key2  1  2  3  5  8     9    10

关于python - 如何从带有列表的嵌套字典构建 MultiIndex Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47416113/

相关文章:

python - 如何使用 python pandas 计算嵌套组比例而不丢失原始行数

python - "an integer is required"以 utf-8 格式打开()文件时?

python - pandas statsmodels中的predict(),添加自变量

python - 将python编译为exe

python - Pandas Dataframe - 将前一列中与特定条件匹配的所有值相加并将其添加到新列中

java - java中的Map返回引用

c++ - 在 map C++ 中使用数组作为键

java - 如何列出 put 方法中的参数?

python - 在 Id 和年份上合并两个数据框 pandas,其中年份缺少值

c++ - 如何定义自定义浮点类型 numpy dtypes (C-API)