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

如何使用Pandas读取ZIP压缩包中的Excel文件?

如何用pandas读取压缩包中的Excel文件并逐行解析

嘿,我来帮你搞定这个问题!当你需要读取zip压缩包里的Excel文件时,pandas其实支持直接处理,不用先手动解压,下面给你两种靠谱的方法,还有排查坑点的小技巧:

方法1:直接指定压缩包内的文件路径

pandas可以识别特殊的URL格式来读取压缩包内的文件,你只需要把路径写成 zip://<压缩包路径>#<内部Excel文件名> 就行。举个实际例子:

import pandas as pd

# 相对路径(压缩包和脚本在同一文件夹)
df = pd.read_excel('zip://./your_file.zip#filename.xlsx')

# 如果Excel文件在压缩包的子文件夹里,比如data/filename.xlsx
# df = pd.read_excel('zip://./your_file.zip#data/filename.xlsx')

# 逐行解析的话,用iterrows()遍历就行
for index, row in df.iterrows():
    # 这里写你的逐行处理逻辑,比如打印某一列
    print(row['你的列名'])

要是用绝对路径的话,格式就是 zip:///绝对路径/your_file.zip#filename.xlsx(注意开头三个斜杠)。

方法2:手动用zipfile模块读取(更灵活)

如果第一种方法遇到奇怪的问题,你可以用Python自带的zipfile模块手动打开压缩包,再把文件对象传给pandas,这种方式能更清楚地看到压缩包里的内容:

import pandas as pd
from zipfile import ZipFile

with ZipFile('your_file.zip', 'r') as zip_obj:
    # 先确认压缩包里的文件列表,避免文件名拼写错误
    print("压缩包内的文件:", zip_obj.namelist())
    
    # 打开指定的Excel文件
    with zip_obj.open('filename.xlsx') as excel_file:
        df = pd.read_excel(excel_file)
        
        # 逐行处理数据
        for index, row in df.iterrows():
            # 替换成你的处理逻辑
            print(f"第{index+1}行数据:{row}")

常见坑点排查

  • 文件名大小写问题:压缩包里的文件名可能和你写的不一样(比如Filename.xlsx vs filename.xlsx),用zip_obj.namelist()打印出来确认准没错。
  • 压缩包损坏:先手动解压压缩包,看看Excel文件能不能正常打开,排除文件本身的问题。
  • pandas版本过低:老版本的pandas对压缩包路径的支持可能有bug,运行pip install --upgrade pandas升级到最新稳定版试试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:14:32