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

Python使用zipfile压缩CSV文件时如何避免列合并?

解决CSV压缩后列合并的问题

嘿,我一眼就瞅出问题所在了——你现在生成的根本不是标准的CSV文件!

你用了data_1.to_string(index=False, header=True)这个方法,它会把DataFrame转换成空格分隔的纯文本,而非CSV格式要求的逗号分隔内容。所以当你把这个文本存成.csv后缀的文件时,解压后打开,CSV阅读器(比如Excel)会默认按逗号分割列,但你的内容全是空格分开的,自然就会把所有列合并成一列了。

修正方案:用to_csv()生成标准CSV内容

直接把to_string()换成Pandas专门用来生成CSV的to_csv()方法,就能生成符合规范的逗号分隔内容,完美解决列合并问题。这里给你调整后的代码:

import zipfile

for i in dealers:
    data_1 = data_dealer[data_dealer['DEALER_ID'] == i]
    # 生成标准CSV格式的字节内容,保留表头、去掉行索引,处理UTF-8 BOM避免乱码
    csv_content = data_1.to_csv(index=False, header=True).encode("utf_8_sig")
    # 注意:原代码里的Zipfile是拼写错误,正确的类名是ZipFile(大写F)
    with zipfile.ZipFile(f'data{i}.zip', mode='w') as azip:
        azip.writestr(f'data{i}.csv', data=csv_content, compress_type=zipfile.ZIP_DEFLATED)

几个关键细节说明

  • 替换to_string为to_csv:这是核心,to_csv()会自动用逗号分隔列,生成标准CSV格式,确保解压后列能正常识别。
  • 修复Zipfile拼写错误:Python的zipfile模块中的类是ZipFile(首字母大写F),原代码的写法会抛出AttributeError,必须纠正。
  • 用with语句管理zip文件:这样不需要手动调用close(),代码更简洁,还能避免因异常导致文件未关闭的问题。
  • 保留utf_8_sig编码:和你原来的需求一致,确保生成的CSV文件在Windows系统下打开不会出现中文乱码。

这样修改后,你压缩的CSV文件解压后列就会正常分隔啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:55:58