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

Pandas如何统计player_table球员ID在match_table多列中的出场次数

解法实现

你可以先把match_table中所有主客场球员列的所有值合并成一个一维序列再统计频次,具体实现如下:

步骤1:筛选所有球员列

先把match_table中所有存储player_id的列筛选出来,避免把match_id这类非球员列算进去:

# 两种筛选方式选其一即可
# 方式1:按列名规则匹配,适合列名统一带player关键字的场景
player_cols = [col for col in match_table.columns if "player" in col]
# 方式2:手动指定列名,适合列名规则不统一的场景
# player_cols = ["home_player_1", "home_player_2", "away_player_1", "away_player_2"]

步骤2:统计全量球员ID的出现频次

把筛选出的多列球员ID堆叠为一维序列后做频次统计:

id_appear_counts = match_table[player_cols].stack().value_counts()

如果原始match_table的球员列存在空值,可以在统计前加dropna()过滤:

id_appear_counts = match_table[player_cols].stack().dropna().value_counts()

步骤3:映射统计结果到球员表

给player_table新增统计列,未出场的球员默认填充0:

player_table['appearances'] = player_table['player_id'].map(id_appear_counts).fillna(0).astype(int)

运行后即可得到你预期的输出结果。

原理解释

你之前的写法只统计了home_player_1单列的频次,stack()方法可以把选中的多列数据垂直堆叠为一个长Series,相当于把所有球员列的ID都放到同一个序列里,再做value_counts()得到的就是每个ID在所有球员列中的总出现次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:06:04