如何从给定数据集找出拥有最多连胜场次的球队?
找出拥有最长连胜场次的球队
1. 数据预处理
首先清理数据中的空格问题,并提取每场比赛的获胜球队:
import pandas as pd # 原始数据集 df_dict = { "game": ["1201", "1202", "1203", "1204", "1205"], "home team": ["B", "C", "D", "E", "D"], "away team": ["A", "B", "C ", "D", "A"], "winner": ["home", "away", "home ", "away", "away"], } # 转为DataFrame并清理字段空格 df = pd.DataFrame(df_dict) df["away team"] = df["away team"].str.strip() df["winner"] = df["winner"].str.strip() # 确定每场的获胜球队 df["winning_team"] = df.apply( lambda row: row["home team"] if row["winner"] == "home" else row["away team"], axis=1 )
2. 计算连胜场次
通过标记连胜中断点,分组统计各段连胜的长度:
# 标记连胜的起始点(当前场获胜球队与上一场不同则为新连胜) df["streak_start"] = df["winning_team"] != df["winning_team"].shift(1) # 为每个连胜阶段分配唯一ID df["streak_id"] = df["streak_start"].cumsum() # 统计每个连胜阶段的长度 streak_details = df.groupby(["streak_id", "winning_team"]).size().reset_index(name="streak_length")
3. 筛选最长连胜的球队
找到最长连胜的数值,再筛选出达到该长度的球队:
# 获取最长连胜的长度 max_streak = streak_details["streak_length"].max() # 筛选出拥有最长连胜的球队(去重避免重复显示) top_teams = streak_details[streak_details["streak_length"] == max_streak][["winning_team", "streak_length"]].drop_duplicates() # 重命名列以匹配期望格式 top_teams.columns = ["team", "number of wins"] # 输出结果 print(top_teams.to_markdown(index=False))
最终输出结果
| team | number of wins |
|---|---|
| B | 2 |
| D | 2 |
内容的提问来源于stack exchange,提问作者CBX_DO
相关产品推荐
相关产品推荐

