如何使用列表从嵌套字典构建MultiIndex Pandas DataFrame

时间:2017-11-21 14:57:10

标签: 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这样的帖子帮助我分两步创建它,但是我很难一步完成(即从最初的创建),因为字典中的列表以及之后的元组都在添加一定程度的并发症。

2 个答案:

答案 0 :(得分:7)

我认为你很接近,因为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

答案 1 :(得分:2)

我会将LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); 用于两个级别stack ....

dict
相关问题