2017-12-27 19 views
2

次の形式パンダ:別の列にネストされた辞書の値を表示

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

に、私は辞書のリストにこの

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

のようなものを持っていると私はExcelファイルでは、このデータを印刷したいです要するに、ネストされた値を親キー列の列に表示するとします。私はパンダを使ってこれをどのように達成できますか?

パンダは静かな重いものなので、私はこれを達成するための他の図書館です。

答えて

1

使用pd.io.json.json_normalize -

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

これは、このように見えるの列名になり -

i = list(map(tuple, df.columns.str.split('.'))) 
- 私たちは df.columns.str.splitを使用して、 MultiIndexにこれを変換する必要があります
df.columns 
Index(['detail.id', 'detail.name', 'other.gender', 'other.no'], dtype='object') 

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を...ありがとうございました。 –

関連する問題