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

Pandas中统计DataFrame内Team A与Team B的获胜次数

统计各队伍获胜次数的方法

首先,我们可以直接利用Winner列来统计,因为这一列已经明确记录了每场比赛的获胜队伍。

方法一:直接统计Winner列的频次

这是最简洁的方式:

import pandas as pd

# 构建示例DataFrame
data = {
    'Match': [1,2,3,4],
    'Team A': ['Brasil', 'Brasil', 'France', 'Denmark'],
    'Team B': ['Germany', 'Germany', 'Denmark', 'France'],
    'Winner': ['Germany', 'Brasil', 'France', 'Denmark']
}
df = pd.DataFrame(data)

# 统计各队伍获胜次数
win_counts = df['Winner'].value_counts()
print(win_counts)

输出结果:

Germany    1
Brasil     1
France     1
Denmark    1
Name: Winner, dtype: int64

方法二:分别统计Team A和Team B的获胜次数再合并

如果你想手动验证每支队伍作为A队或B队时的获胜情况,可以这样做:

# 统计Team A获胜的次数
team_a_wins = df[df['Team A'] == df['Winner']]['Team A'].value_counts()
# 统计Team B获胜的次数
team_b_wins = df[df['Team B'] == df['Winner']]['Team B'].value_counts()

# 合并两个统计结果,缺失的队伍填充0
total_wins = team_a_wins.add(team_b_wins, fill_value=0).astype(int)
print(total_wins)

输出结果与方法一一致:

Brasil     1
Denmark    1
France     1
Germany    1
dtype: int64

为什么isin没得到清晰结果?

isin方法是用来判断某列的值是否在一个列表里,比如df['Team A'].isin(df['Winner'])只会返回布尔序列,标记哪些Team A的队伍曾获胜,但无法直接统计总次数。而且这种方式只会统计作为Team A时的获胜情况,遗漏了作为Team B时的获胜记录,所以结果不完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:48:18