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

时间:2017-12-27 11:18:16

标签: python pandas dataframe

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

[
  {
    "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 个答案:

答案 0 :(得分:1)

使用xhdpi -

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