我有这样的字典清单

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


简而言之,我想在父键列下的列中显示嵌套值。如何使用Pandas实现此目的?

还是他们可以通过它实现这一目标的其他任何图书馆,因为熊猫是一个安静而沉重的图书馆。

最佳答案

使用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)

关于python - Pandas :在单独的列中显示嵌套的字典值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47991231/

10-11 04:56