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

pandas保存CSV文件时已指定列仍全部合并为单列问题

问题成因

导出的CSV内容全部挤在同一列的核心原因是str(expcsvdf)的用法完全不符合CSV文件的生成逻辑:

  • str()转换DataFrame时,pandas会返回控制台打印用的格式化纯文本,内容包含对齐用的空格、排版边框、默认行索引,本质是给人肉眼看的展示内容,不是用逗号分隔字段的结构化CSV数据
  • 这种无标准分隔符的纯文本被写入.csv后缀的文件后,表格软件无法识别列边界,自然会把所有内容归到同一列
  • 直接去掉str()后程序能运行是因为文件写入接口会尝试将DataFrame对象序列化,但这种写法没有经过CSV格式规范转换,依然存在格式错乱、内容缺失的风险,不是合规的导出方式。
正确实现方案

使用pandas内置的to_csv()方法完成导出,不需要手动调用str()转换,也不需要手动拼接内容,两种常用写法如下:

写法1:直接传入文件路径(最简洁,推荐)

不需要手动打开/关闭文件,pandas会自动处理文件IO:

expcsv = {'PREDICTION OF' : ['CUTTING TEMPERATURE :','SURFACE ROUGHNESS :','CUTTING FORCE X :',
                                 'CUTTING FORCE Y :','CUTTING FORCE Z :'],
              'VALUE' : [out_arrct,out_arrra,out_arrfx,out_arrfy,out_arrfz],
              'METRICS' : ['°C','μm','N','N','N']
              }
expcsvdf = pd.DataFrame(expcsv, columns=['PREDICTION OF', 'VALUE', 'METRICS'])
    
data = [("csv file(*.csv)","*.csv")]
file = asksaveasfilename(filetypes = data, defaultextension = data)
# 导出为标准CSV,不导出行索引,指定utf-8编码
expcsvdf.to_csv(file, encoding="utf-8", index=False)

写法2:传入已打开的文件对象(适合需要追加写入其他内容的场景)

如果需要在同一个CSV里写入DataFrame之外的自定义内容,可以手动打开文件后将对象传给to_csv():

with open(file,"w", encoding="utf-8") as f:
    # 先写入DataFrame内容
    expcsvdf.to_csv(f, index=False)
    # 后续可继续写入其他自定义内容,比如备注行
    # f.write("备注:以上数据为模型预测结果\n")

额外注意事项

  • 必须传入index=False参数,否则pandas会默认把DataFrame的行序号作为单独一列写入,多出无意义的索引列
  • 如果导出的CSV用Windows自带的Excel打开出现中文乱码,可将编码参数改为utf-8-sig,适配Excel的默认编码识别规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:54:27