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
相关产品推荐
相关产品推荐

