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

请求提供代码:将含嵌套subtable的JSON展平为多行DataFrame

展平嵌套JSON生成包含各参与类型的DataFrame

你可以通过pandas.json_normalize的record_path和meta参数直接实现嵌套数据的展平,把每个参与类型拆分为单独行,同时保留上层的聚合数据。

实现代码

import pandas as pd
import json

# 加载你的JSON数据(直接使用你提供的结构)
data = [
    {
        "club_id":"1234", 
        "sum_totalparticipation":227, 
        "level":1, 
        "idsubdatatable":1229, 
        "segment": "club_id==1234;eventName==national%2520participation,eventName==local%2520partipation,eventName==global%2520participation", 
        "subtable":[
            {"label":"national participation", "sum_events_totalevents":105,"level":2},
            {"label":"local participation","sum_events_totalevents":100,"level":2},
            {"label":"global_participation","sum_events_totalevents":22,"level":2}
        ]
    }
]

# 展平嵌套数据:指定要展开的子表路径,同时保留上层字段
flat_df = pd.json_normalize(
    data,
    record_path='subtable',  # 要展开的嵌套列表字段
    meta=['club_id', 'sum_totalparticipation', 'level', 'idsubdatatable', 'segment'],  # 保留的上层字段
    meta_prefix='parent_'  # 给上层字段加前缀区分,可选
)

print(flat_df)

输出结果

执行后会得到如下结构的DataFrame,每个参与类型占一行,同时关联了俱乐部的聚合数据:

label  sum_events_totalevents  level parent_club_id  parent_sum_totalparticipation  parent_level  parent_idsubdatatable                                                                 parent_segment
0  national participation                      105      2           1234                             227             1                    1229  club_id==1234;eventName==national%2520participation,eventName==local%2520partipation,eventName==global%2520participation
1    local participation                      100      2           1234                             227             1                    1229  club_id==1234;eventName==national%2520participation,eventName==local%2520partipation,eventName==global%2520participation
2     global_participation                       22      2           1234                             227             1                    1229  club_id==1234;eventName==national%2520participation,eventName==local%2520partipation,eventName==global%2520participation

如果你不需要parent_前缀,可以去掉meta_prefix参数,直接使用原始字段名。

内容的提问来源于stack exchange,提问作者Beginner in the house

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:10:30