2017-12-27 54 views
2

我的字典是这样的熊猫:在单独的列中显示嵌套的字典中的值

[ 
    { 
    "detail": { 
    "name": "boo", 
    "id": 1 
    }, 
    "other": { 
     "gender": "m", 
     "no": "234" 
    } 
    }, 
    { 
    "detail": { 
     "name": "hoo", 
     "id": 2 
    }, 
    "other": { 
     "gender": "f", 
     "no": "456" 
    } 
    } 
] 

名单,我想在一个Excel文件的格式如下

detail   other 
name id gender no 
boo 1  m  234 
hoo 2  f  456 

打印此数据总之,我想显示父键列下的列中的嵌套值。我如何使用熊猫来实现这个目标?

或者是我们可以达到这个目标的任何其他图书馆,因为熊猫是安静的。

回答

1

使用pd.io.json.json_normalize -

df = pd.io.json.json_normalize(data) 

这导致列名看起来像这样 -

df.columns 
Index(['detail.id', 'detail.name', 'other.gender', 'other.no'], dtype='object') 

我们需要将此转换为MultiIndex,使用df.columns.str.split -

i = list(map(tuple, df.columns.str.split('.'))) 

致电pd.MultiIndex.from_tuples并指定结果背 -

df.columns = pd.MultiIndex.from_tuples(i) 
df 

    detail  other  
     id name gender no 
0  1 boo  m 234 
1  2 hoo  f 456 

如果你的数据比较复杂,你可能想使列上额外的sort_index呼叫 -

df = df.sort_index(axis=1) 
+1

Niceee ...谢谢你这么多。 –