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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:53:13