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

如何判断Wyscout数据集中射门事件是否为进球

Wyscout数据集射门进球标记正确获取方法

你对Wyscout的事件字段结构理解有误:进球不属于射门事件下的subEvent层级,subEventName字段只会记录射门的类型,比如头球射门、定位球射门、禁区内射门这类分类,不会直接标记是否进球。

所有进球、射正、射偏这类事件状态标记,都存在事件的tags字段中,进球对应的标签ID为101。

修正代码

你之前的代码没有读取和解析tags字段,所以找不到进球标记,参考以下代码处理:

import pandas as pd
import ast

df = pd.read_csv('events_England.csv')
# csv读取后tags字段是字符串格式的列表,先转成Python原生列表
df['tags'] = df['tags'].apply(ast.literal_eval)

shots = df[df['eventName']=='Shot'].copy()
# 新增二进制进球标识字段:判断标签列表中是否存在ID为101的进球标签
shots['is_goal'] = shots['tags'].apply(lambda tag_list: any(tag['id'] == 101 for tag in tag_list))

# 提取需要的字段,此时已经带上进球标识
data = shots[['subEventName', 'pos_orig_x', 'pos_orig_y', 'pos_dest_y', 'pos_dest_x', 'is_goal']]

补充说明

  • 如果你的数据集是旧版Wyscout导出格式,tags字段可能直接存储标签ID列表,没有嵌套字典,那判断逻辑改成lambda tag_list: 101 in tag_list即可,可以先打印1-2行tags字段的内容确认结构。
  • 其他常用射门相关标签ID可以按需取用:102对应射正、103对应射偏、104对应被封堵射门,都不需要从subEventName字段匹配。

内容的提问来源于stack exchange,提问作者Anas Souabni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:51:43