如何在 Wyscout 数据集中确定射门是否进球

问题描述 投票:0回答:1

所以我正在尝试过滤 Wyscout 数据集。示例:

screenshot of spreadsheet

问题是我无法确定射门是否进球。

这是我尝试过的代码:

import pandas as pd
df = pd.read_csv('events_England.csv')

shots = df[df.eventName=='Shot']
data = shots[['subEventName', 'pos_orig_x', 'pos_orig_y', 'pos_dest_y', 'pos_dest_x']]

为了解释“事件”应该是射门尝试,结束进球应该是“子事件”。

生成的数据框的图像:

screenshot of table

我找不到“目标”子事件名称,无法将其更改为二进制值。

python dataframe
1个回答
0
投票

要确定 Wyscout 数据集中的射门是否进球,您需要检查与事件关联的标签。具体来说,标签 101 代表一个目标。

下面是一个代码示例,您可以使用它来识别导致进球的射门。该代码过滤 Shot 类型的事件并检查标签列中是否存在标签 101:

将 pandas 导入为 pd

加载数据集

df = pd.read_csv('events_England.csv')

过滤“Shot”类型的事件

镜头 = df[df['事件名称'] == '镜头']

检查是否存在指示目标的标签“101”

shots['is_goal'] = shot['tags'].apply(lambda x: 101 in [tag['id'] for tag in eval(x)])

显示射门信息,包括指示是否进球的栏

数据 = 镜头[['subEventName', 'pos_orig_x', 'pos_orig_y', 'pos_dest_x', 'pos_dest_y', 'is_goal']]

显示结果

打印(数据)

在此代码中,如果射门进球,is_goal 列将显示 True。 eval() 函数用于正确解释标签列的格式,该标签列通常是字典列表。

© www.soinside.com 2019 - 2024. All rights reserved.