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

Pandas如何展平DataFrame列中存储的JSON数组数据

问题根因

你之前调用explode()、pd.json_normalize()未得到预期结果,核心原因是site_Activity列存储的是JSON格式字符串,而非pandas可直接处理的Python原生列表/字典对象,必须先做反序列化转换,才能执行后续展平操作。

实现步骤
  • 导入json模块,将site_Activity列的JSON字符串批量转换为Python原生列表
  • 对转换后的列执行explode(),将列表内的每一条活动记录拆分为独立行
  • 将拆分后每行存储的活动字典展开为独立字段,与原表id列拼接,即可得到目标结构
完整可运行代码
import pandas as pd
import json

# 反序列化JSON字符串为原生列表
df["site_Activity"] = df["site_Activity"].apply(json.loads)

# 按活动记录拆分行
df = df.explode("site_Activity", ignore_index=True)

# 展平活动字典为单独列,拼接id得到最终结果
df_final = pd.concat(
    [df[["id"]], pd.json_normalize(df["site_Activity"])],
    axis=1
)
结果验证

执行上述代码后,输出的df_final完全匹配你给出的预期结构:

idaction_timetime_spenturl
1232022-07-05T01:53:59.000000Z12cool.stuff.io/advanced
1232022-07-05T00:10:20.000000Z0cool.stuff.io/advanced1
1232022-07-04T23:45:39.000000Z0cool.stuff.io
4562022-07-04T23:00:23.000000Z0cool.stuff.io/awesome

注:如果你的pandas版本≥1.5.0,也可以直接用pd.json_normalize搭配记录路径参数一次性完成转换,但上述写法兼容更低版本,通用性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:15:33