本文目录导读:

在Python中查看VAR(视频助理裁判)介入的判罚,通常需要在足球比赛数据集或自定义的事件日志中查找。
由于“VAR介入”并不是一个统一的固定词条,它在不同数据表中的字段名可能不同,以下是几种常见的查看方式和代码逻辑,你可以根据你的数据结构对号入座:
最常见结构:事件日志中有明确的“介入”标记
如果数据表中有类似 var_intervention 或 review 的布尔字段(True/False),或者 decision 字段中包含“VAR”字样,直接筛选即可。
import pandas as pd
# 假设 df 是存有比赛事件的数据框
df = pd.read_csv('match_events.csv')
# 方式一:如果有一个专门的布尔列(True表示VAR介入)
var_events = df[df['var_intervention'] == True]
print(f"VAR介入次数: {len(var_events)}")
print(var_events[['minute', 'team', 'player', 'original_decision', 'final_decision']])
# 方式二:如果决定类型字符串中包含“VAR”关键词
var_kw = df[df['decision'].str.contains('VAR', case=False, na=False)]
print(var_kw)
进阶结构:只有“主判罚”和“复核后判罚”两列
这种情况下,你需要找出原始判罚和最终判罚不一致的记录,这些通常就是VAR介入并改判的事件。
# 假设有 original_decision(主裁最初判罚)和 final_decision(VAR复核后判罚)
overturned = df[df['original_decision'] != df['final_decision']]
print("VAR改判记录(前后不一致):")
print(overturned[['minute', 'original_decision', 'final_decision']])
# 如果原始判罚和最终判罚相同(维持原判),但你想看所有VAR检查的事件,
# 可能还需要检查是否有一个 'var_check' 列
checked = df[df['var_check'] == 1] # 1 表示检查过
结构化日志(JSON/嵌套数据)
如果数据是嵌套结构(event_data 中包含 var 字典),则需要用 json_normalize 展开。
import json
with open('match_data.json', 'r') as f:
data = json.load(f)
var_events = []
for event in data['events']:
# 假设每个事件里有 'var' 键,且 'var' 键存在
if 'var' in event and event['var'].get('intervened') == True:
var_events.append({
'minute': event['minute'],
'player': event.get('player'),
'reason': event['var'].get('reason'), # 如 'Handball'、'Offside'
'outcome': event['var'].get('outcome') # 如 'Goal'、'Penalty'
})
print(var_events)
如果需要可视化或统计
你可以按球队、比赛阶段(上半场/下半场)来聚合查看。
# 统计每个球队被VAR介入影响的总数
var_count_by_team = var_events.groupby('team')['event_id'].count()
print(var_count_by_team)
# 查看VAR介入最常发生的时间段(以5分钟为窗口)
var_events['period'] = var_events['minute'] // 5 * 5
period_counts = var_events['period'].value_counts().sort_index()
print(period_counts)
找不到对应字段怎么办?
如果上述字段都不存在,通常是数据集不包含VAR信息,或者变量名比较特殊(is_cancelled、review_type),你可以用以下命令查看所有列名来找线索:
print(df.columns.tolist())
# 或者搜索包含 'var'、'review'、'video'、'check' 的列
var_cols = [col for col in df.columns if 'var' in col.lower() or 'review' in col.lower()]
print("潜在相关列:", var_cols)
关键点提示
- 区分“VAR介入”和“VAR静默检查”:很多数据源只记录“改判”或“介入”,部分赛事数据连“检查但没改判”也会记录(字段名通常是
VAR_Check或Reviews)。 - 判罚决定:通常判罚代码(如
Goal、Penalty、No Penalty)会存储在decision或outcome列中,你可以对比original和final看是否被推翻。
如果你能提供你的数据表格的前几行数据或列名列表,我可以帮你写更精确的筛选代码。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播