我有一个类似这样的词典列表
[
{
"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
简而言之,我想在父键列下的列中显示嵌套值。我怎样才能用熊猫来实现这个目标?
或者是他们的任何其他图书馆,我可以通过它来实现这一点,因为大熊猫是沉重的。
使用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)