如何实现嵌套json到数据帧的三层扁平化



例如,JSON是:

{
"samples": [
{
"sample_id": "A2434",
"start": "1664729482",
"end": "1664729482",
"parts": [
{
"name": "123",
"start": "1664736682",
"end": "1618688700",
"fail": ""
}
]
}
]
}

我想要如下的df和列:

sample_id,开始,结束,parts.name,parts.start,parts.end,parts.fail

使用json.normalize

df = pd.json_normalize(
data=data["samples"],
record_path="parts",
record_prefix="parts.",
meta=["sample_id", "start", "end"]
).drop(columns="parts.name")
print(df)
parts.start   parts.end parts.fail sample_id       start         end
0  1664736682  1618688700                A2434  1664729482  1664729482

使用pd.read_json()将JSON解包到数据帧。然后,您可以根据需要在生成的列上使用pd.json_normalize(),以获得更多嵌套的数据。

您可以使用df.explode获取行列表中的单独项,并使用agg(pd.Series)将字典中的键和值对分别转换为列和行。

df = pd.DataFrame(data['samples'])
df[['parts.start','parts.end','parts.fail']] = df['parts'].explode().agg(pd.Series)
df.drop('parts', axis=1, inplace=True)

输出:

sample_id  start   end      parts.name parts.start parts.end   parts.fail
0   A2434   1664729482  1664729482   123    1664736682  1618688700

相关内容

  • 没有找到相关文章

最新更新