请求提供代码:将含嵌套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
相关产品推荐
相关产品推荐

