如何用Pandas提取CSV中含JSON格式的列并展开数据?
解决Pandas解析JSON列空值并展开进球记录的问题
步骤1:处理空值并解析JSON列
先把goals列中float类型的空值(NaN)替换为可被JSON解析的空数组字符串"[]",再用json.loads解析:
import pandas as pd import json # 假设数据已加载到DataFrame df中 df['goals'] = df['goals'].fillna('[]') df['goals'] = df['goals'].apply(json.loads)
步骤2:拆分进球为单独行
用explode方法将每个进球拆成独立行,同时保留原比赛的id_match、home_team等字段:
expanded_df = df.explode('goals', ignore_index=True)
步骤3:将进球信息展开为独立列(可选)
如果每个进球是字典结构(比如包含球员、时间等字段),可以把字典键转为单独列:
# 拆分进球字典为列 expanded_df = pd.concat([ expanded_df.drop('goals', axis=1), expanded_df['goals'].apply(pd.Series) ], axis=1) # 按需过滤无进球的行 expanded_df = expanded_df.dropna(subset=['player']) # 替换为实际进球字段名,如player、minute
核心要点
fillna('[]')是解决类型错误的关键:把无法被json.loads处理的float空值转为合法JSON格式。explode会自动复制原行的所有关联字段,保证每个进球记录都对应正确的比赛信息。
内容的提问来源于stack exchange,提问作者Łukasz
相关产品推荐
相关产品推荐

