如何将.zst解压数据加载到Pandas DataFrame?解决文件名过长错误
解决.csv.zst文件加载到Pandas DataFrame的问题
你的问题核心在于:解压后得到的decompressed是字节类型的CSV内容,但你错误地把它当成文件路径传给了open(),这才触发了File name too long错误——open()只接受文件路径字符串,不识别完整的文件内容字节。
直接用io.BytesIO把解压后的字节数据包装成类文件对象,就能让pd.read_csv直接读取,不需要额外写入文件。修正后的完整代码如下:
import os import zstd import pandas as pd from io import BytesIO # 导入BytesIO模块 for ex in examples: path = root + "f=" + ex + "/" + date data_list = os.listdir(path) # 重命名变量避免和后续数据变量冲突 for d in data_list: zst_datapath = path + "/" + d with open(zst_datapath, 'rb') as fh: compressed_data = fh.read() dctx = zstd.ZstdDecompressor(max_window_size=2147483648) decompressed_bytes = dctx.decompress(compressed_data) # 关键修正:用BytesIO包装字节数据,直接传给read_csv df = pd.read_csv(BytesIO(decompressed_bytes)) # 这里可添加对DataFrame的后续处理逻辑,比如合并、分析等
额外优化提示:
- 如果单个.zst文件体积很大,不建议一次性读取全部压缩内容,可改用流式解压减少内存占用:
with open(zst_datapath, 'rb') as fh: with dctx.stream_reader(fh) as reader: df = pd.read_csv(reader)
内容的提问来源于stack exchange,提问作者MoneyBall
相关产品推荐
相关产品推荐

