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

求助:使用For循环下载CSV文件时Pandas出现Error tokenizing data错误

解决CSV解析错误(ParserError)的方案

这个错误是因为目标CSV文件存在注释行或格式异常,导致pandas默认解析规则无法正确识别字段。以下是具体修复步骤:

1. 修正CSV读取参数,处理注释与格式问题

在pd.read_csv中添加参数跳过注释行、显式指定分隔符,避免解析异常:

df = pd.read_csv(
    f"http://www.football-data.co.uk/mmz4281/{i}{i+1}/{league}.csv",
    comment='#',  # 跳过以#开头的注释行
    sep=',',      # 显式指定分隔符为逗号
    on_bad_lines='skip'  # 跳过格式错误的行(可选)
)

2. 更新列名匹配逻辑

原代码使用的Full time home goals等列名已被数据源改为缩写(如FTHG代表全场主队进球、FTAG代表全场客队进球),需同步修改列选择和重命名代码:

# 替换原有的列选择与重命名代码
df = df[['Date', 'HomeTeam', 'AwayTeam', 'FTHG', 'FTAG']]
df = df.rename(columns={'FTHG': 'HomeGoals', 'FTAG': 'AwayGoals'})

完整修复后的代码

import pandas as pd

leagues_short=['SP1', 'D1', 'E0', 'I1'] # 西甲、德甲、英超、意甲
dict_historical_data = {}

for league in leagues_short:
    frames = []
    for i in range(15, 21):
        df = pd.read_csv(
            f"http://www.football-data.co.uk/mmz4281/{i}{i+1}/{league}.csv",
            comment='#',
            sep=',',
            on_bad_lines='skip'
        )
        df = df[['Date', 'HomeTeam', 'AwayTeam', 'FTHG', 'FTAG']]
        df = df.rename(columns={'FTHG': 'HomeGoals', 'FTAG': 'AwayGoals'})
        df = df.assign(Season=i)
        frames.append(df)
    df_historical_data = pd.concat(frames)
    dict_historical_data[league] = df_historical_data

补充说明

  • 数据源的CSV文件开头通常有几行#开头的注释说明,pandas默认会将其当作数据行解析,导致字段数量不匹配,comment='#'参数可直接跳过这些行。
  • 当前数据源已统一使用缩写列名,必须更新列选择逻辑才能正确提取目标数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:12:51