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

Pandas 如何将DataFrame中嵌套JSON列拆分为多行并展开字段

实现方法

首先确保details列的内容为Python字典列表格式,如果读入时是JSON字符串,需要先做类型转换:

import pandas as pd
import json

# 读入csv样例数据
df = pd.read_csv("输入文件路径.csv")
# 将details列的JSON字符串转为字典列表
df["details"] = df["details"].apply(json.loads)

如果是自行构造测试DataFrame可以用以下代码:

df = pd.DataFrame({
    "cust_id": [101, 102],
    "name": ["Kevin", "Scott"],
    "details": [
        [{"id":1001,"country":"US","state":"OH"}, {"id":1002,"country":"US","state":"GA"}],
        [{"id":2001,"country":"US","state":"OH"}, {"id":2002,"country":"US","state":"GA"}]
    ]
})

方法一:explode + json_normalize 两步实现

兼容性更强,适合所有支持explode方法的Pandas版本:

# 将details列的数组按元素拆分为多行
df_exploded = df.explode("details", ignore_index=True)
# 展开每行的字典为独立列,和原有列拼接得到最终结果
result = pd.concat(
    [df_exploded.drop(columns="details"),
     pd.json_normalize(df_exploded["details"])],
    axis=1
)

方法二:json_normalize 一步实现(适用于Pandas 1.3及以上版本)

直接指定数组路径和要保留的原有列,代码更简洁:

result = pd.json_normalize(
    df.to_dict("records"),
    record_path="details",
    meta=["cust_id", "name"]
)

两种方法最终输出的结果都符合需求,可根据自己的Pandas版本和使用习惯选择。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:24:08