You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas DataFrame中展平JSON数组元素?附示例

展平DataFrame中的JSON数组列

嘿,这事儿好办!我帮你把这个嵌套的JSON数组展平成结构化的结果,分两种常见情况来处理:

情况1:name列已经是Python列表(内含字典)

如果你的DataFrame里name列已经是解析后的Python列表(就像你给出的示例那样),可以用explode先把列表拆成每行一个字典,再用json_normalize把字典展开成独立列:

第一步:构建示例DataFrame

import pandas as pd

data = {
    "id": ["a1xy", "a7yz", "bx4y"],
    "name": [
        [{"event": "sports", "start": "100"}, {"event": "lunch", "start": "121"}],
        [{"event": "lunch", "start": "109"}, {"event": "movie", "start": "97"}],
        [{"event": "dinner", "start": "78"}, {"event": "sleep", "start": "25"}]
    ]
}
df = pd.DataFrame(data)

第二步:展平数组并结构化

# 把列表拆成每行一个字典
df_exploded = df.explode("name", ignore_index=True)

# 把字典展开成列,和原id列拼接
result = pd.concat([df_exploded["id"], pd.json_normalize(df_exploded["name"])], axis=1)

最终结果

ideventstart
a1xysports100
a1xylunch121
a7yzlunch109
a7yzmovie97
bx4ydinner78
bx4ysleep25

情况2:name列是未解析的JSON字符串

如果你的name列是原始的JSON字符串(比如从CSV/数据库导入时没自动解析),先加一步解析成Python对象:

import json

# 先解析JSON字符串为Python列表
df["name"] = df["name"].apply(json.loads)

# 之后重复情况1的explode和json_normalize步骤即可
df_exploded = df.explode("name", ignore_index=True)
result = pd.concat([df_exploded["id"], pd.json_normalize(df_exploded["name"])], axis=1)

这样就能完美得到你想要的结构化结果啦!

内容的提问来源于stack exchange,提问作者Symphony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:31:59