如何将多层嵌套字典列表转换为指定格式的pandas DataFrame?
解决嵌套字典列表转Pandas DataFrame的问题
你的转换方式仅展开了最外层字典,嵌套的teams列表和stats列表并未被拆解。要得到期望的扁平结构DataFrame,需要逐层处理嵌套数据:
完整代码实现
import pandas as pd # 初始化空列表存储处理后的数据 processed_data = [] # 遍历每一条游戏数据 for game in game_stats: game_id = game['id'] # 遍历当前游戏下的每支队伍 for team in game['teams']: # 复制队伍基础信息 team_data = team.copy() # 将stats列表转为键值对字典,同时移除原stats字段 stats_dict = {item['category']: int(item['stat']) for item in team_data.pop('stats')} # 关联游戏ID team_data['game_id'] = game_id # 合并基础信息与统计数据 team_data.update(stats_dict) # 加入处理后列表 processed_data.append(team_data) # 转换为DataFrame game_stats_df = pd.DataFrame(processed_data) # 可选:调整列顺序匹配期望格式 target_columns = ['game_id', 'school', 'conference', 'homeAway', 'points', 'rushingTDs', 'passingTDs', 'kickingPoints', 'fumblesRecovered', 'firstDowns'] game_stats_df = game_stats_df[target_columns]
输出结果
运行后打印game_stats_df会得到:
game_id school conference homeAway points rushingTDs passingTDs kickingPoints fumblesRecovered firstDowns 0 401282099 LSU SEC away 21 2 1 3 0 22 1 401282099 Kentucky SEC home 42 3 4 0 1 24
关键步骤说明
- 遍历游戏数据时,为每支队伍绑定对应的
game_id,保证数据关联关系 - 将
stats列表转换为字典,把嵌套的统计项直接展开为DataFrame的列 - 用
int()转换统计值的类型,避免字符串类型影响后续数值分析 - 可选调整列顺序,让输出更贴合你的期望格式
内容的提问来源于stack exchange,提问作者nonamethoughtof
相关产品推荐
相关产品推荐

