本文目录导读:

我理解您想查询某个 Python 案例中“低平球传中次数”的统计方法,但您没有提供具体的代码或数据,我先给出一个通用的实现思路,您可以根据自己的数据结构调整。
核心思路
低平球传中通常需要同时满足几个条件:
- 传球类型是传中(cross)
- 传球高度较低(如 ground / low)
- 可能还需判断起始位置在边路区域
示例代码
假设数据来自 StatsBomb 或类似事件数据:
import pandas as pd
# 假设 df 包含传球事件,字段示例:
# type_name, pass_height_name, start_x, start_y, end_x, end_y
# 方法1:直接按传球高度筛选
low_cross = df[
(df['type_name'] == 'Pass') &
(df['pass_height_name'].isin(['Ground Pass', 'Low Pass'])) &
(df['pass_cross'] == True) # 若是传中标记
]
count = len(low_cross)
print(f"低平球传中次数: {count}")
如果是 StatsBomb 数据
import pandas as pd
from statsbombpy import sb
events = sb.events(match_id=12345)
# 提取传球事件
passes = events[events['type'] == 'Pass'].copy()
# 展开 pass 子字段
passes['pass_height'] = passes['pass'].apply(
lambda x: x.get('height', {}).get('name') if isinstance(x, dict) else None
)
passes['is_cross'] = passes['pass'].apply(
lambda x: x.get('cross', False) if isinstance(x, dict) else False
)
# 低平球传中:高度为"低平球"且是传中
low_cross = passes[
(passes['is_cross'] == True) &
(passes['pass_height'] == 'Low Pass') # 或 'Ground Pass'
]
print(f"低平球传中次数: {len(low_cross)}")
常见的高度分类(StatsBomb)
| 英文 | 中文 |
|---|---|
| Ground Pass | 地面球 |
| Low Pass | 低平球 |
| High Pass | 高球 |
请补充信息
为了给您更准确的答案,能否提供:
- 您用的数据源(StatsBomb / Opta / 自建 CSV)?
- 相关代码片段或字段名?
- 是否要按球员/球队/区域细分统计?
发给我后,我可以直接帮您定位或修正代码。