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

使用Pandas从Excel筛选数据并统计2010年以来FIFA赛事进球最多的国家

修正思路

你的现有代码存在两个核心错误:

  • 你定义的total_score是单场比赛两队的总进球数,不是单个国家的累计进球,和统计目标完全不符
  • 日期解析的格式符配置错误:%M代表分钟、%D是月/日/年的缩写,会导致日期解析异常;同时str.contains遇到空值会返回NaN,会导致筛选结果不全

完整修正代码

import pandas as pd

# 1. 日期解析,自动适配格式,异常值转为空值
df['date'] = pd.to_datetime(df['date'], errors='coerce')

# 2. 筛选2010年及以后、赛事名称包含FIFA的比赛(忽略大小写、空值默认返回False)
sub_df = df[
    (df['date'].dt.year >= 2010) & 
    (df['tournament'].str.contains('FIFA', case=False, na=False))
].copy()

# 3. 拆分主客场数据,把每场比赛拆为两条记录,分别对应主队、客队的进球
home_goals = sub_df[['home_team', 'home_score']].rename(columns={'home_team': 'country', 'home_score': 'goals'})
away_goals = sub_df[['away_team', 'away_score']].rename(columns={'away_team': 'country', 'away_score': 'goals'})
all_goals = pd.concat([home_goals, away_goals], ignore_index=True)

# 4. 按国家分组求和,统计累计进球数,降序排序
country_goals_total = all_goals.groupby('country')['goals'].sum().reset_index()
country_goals_total = country_goals_total.sort_values('goals', ascending=False)

# 5. 取累计进球最多的国家
max_goals_country = country_goals_total.iloc[0]

# 输出结果
print(f"2010年以来FIFA赛事中累计进球最多的国家是:{max_goals_country['country']},总进球数为:{max_goals_country['goals']}")

逻辑说明

  • 拆分主客场数据是核心步骤:每场比赛有两个参赛队,两队的进球需要分别统计归属,才能按国家累加
  • str.contains添加case=False适配大小写混写的赛事名称,na=False避免字段空值导致筛选报错
  • 分组求和后直接取排序后的第一条结果,就是累计进球最多的国家

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:24:04