Pandas:在单独的列中显示嵌套的字典值

问题描述 投票:2回答:1

我有一个类似这样的词典列表

[
  {
    "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

简而言之,我想在父键列下的列中显示嵌套值。我怎样才能用熊猫来实现这个目标?

或者是他们的任何其他图书馆,我可以通过它来实现这一点,因为大熊猫是沉重的。

python pandas dataframe
1个回答
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) 
© www.soinside.com 2019 - 2024. All rights reserved.