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

如何用Python动态读取Zip文件中的CSV?解决Kaggle链接读取报错

解决方案:动态读取Kaggle压缩包中的CSV文件

错误原因

你使用的Kaggle下载链接指向的是ZIP压缩包,而非直接的CSV文件。pd.read_csv()会将压缩包的二进制内容当作纯文本CSV解析,自然会触发字段不匹配的ParserError。

可行方法

方法1:内存中解压并读取目标CSV

通过requests获取压缩包字节流,结合zipfile和io在内存中解压,直接读取指定的rad_15min.csv:

import pandas as pd
import requests
from io import BytesIO
from zipfile import ZipFile

# 压缩包下载链接
zip_url = "https://www.kaggle.com/datasets/lucafrance/bike-traffic-in-munich/download?datasetVersionNumber=7"

# 发起请求(若遇403错误,需添加Kaggle API认证头,见下方注意事项)
response = requests.get(zip_url)
response.raise_for_status()  # 捕获请求失败的异常

# 内存中处理zip文件
with ZipFile(BytesIO(response.content)) as zip_file:
    # 先确认目标文件存在于压缩包内
    target_file = "rad_15min.csv"
    if target_file in zip_file.namelist():
        # 读取并解析CSV
        df = pd.read_csv(zip_file.open(target_file))
    else:
        raise FileNotFoundError(f"压缩包中未找到文件:{target_file}")

方法2:利用Pandas内置压缩参数直接读取

Pandas的read_csv支持直接处理ZIP压缩包,只需指定压缩方法和目标文件名:

import pandas as pd

zip_url = "https://www.kaggle.com/datasets/lucafrance/bike-traffic-in-munich/download?datasetVersionNumber=7"

# 直接读取zip包内的指定CSV
df = pd.read_csv(
    zip_url,
    compression={"method": "zip", "archive_name": "rad_15min.csv"}
)

注意事项

  • Kaggle访问认证:若运行时遇到403 Forbidden错误,说明需要Kaggle API认证。需在请求头中添加你的API Token:
    headers = {"Authorization": "Bearer YOUR_KAGGLE_API_TOKEN"}
    # 对应方法1的请求修改为:
    response = requests.get(zip_url, headers=headers)
    # 方法2可通过设置环境变量或配置文件完成认证,参考Kaggle官方文档
    
  • 文件路径验证:若压缩包内的CSV文件位于子目录中(例如bike-traffic-in-munich/rad_15min.csv),需修改archive_name或target_file为完整路径。可通过zip_file.namelist()查看压缩包内的所有文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:05:14