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

如何使用to_csv函数避免CSV格式错乱及数据合并为单列问题

问题描述

我用Python的pandas写了一段代码,读取一个包含6列的建材数据库CSV文件,功能如下:

  • 接收用户输入的材料名称,验证是否存在于数据库中
  • 若存在则输出对应的Unique ID;若不存在则收集材料强度、成本、寿命等信息,生成新条目并用pandas.concat添加到数据库

但新增条目后用to_csv保存时,原CSV的逗号分隔格式被改成了制表符分隔,导致后续运行代码时无法识别ICE DB Name等列,所有数据合并成了单列。

原数据库CSV(逗号分隔)示例:

Unique ID,ICE DB Name,EC per kg,Strength,Cost,Lifespan
52bdfeb3-979f-4fcd-b4eb-6ffbda643c52,"Aggregates and sand, general UK, mixture of land won, marine, secondary and recycled, bulk, loose",0.01,0,0,0
...

保存后的错误格式(制表符分隔)示例:

Unique ID   ICE DB Name EC per kg   Strength    Cost    Lifespan
52bdfeb3-979f-4fcd-b4eb-6ffbda643c52    Aggregates and sand, general UK, mixture of land won, marine, secondary and recycled, bulk, loose   0.01    0.0 0.0 0
...

核心代码片段:

import pandas as pd
import uuid
...
df.to_csv('building_materials_DB.csv', index=False, sep='\t')
...

需要调整代码,确保to_csv保存时不改变原CSV的格式。

解决方案

问题根源是你调用to_csv时显式指定了sep='\t'(制表符分隔),而原文件是逗号分隔的CSV,修改方法如下:

  1. 最简修改:移除sep='\t'参数
    pandas的to_csv默认分隔符就是逗号,直接删除这个参数就能保持原格式:
df.to_csv('building_materials_DB.csv', index=False)
  1. 显式指定逗号分隔符(更稳妥)
    如果担心默认行为有变化,可明确指定逗号作为分隔符,同时开启quoting参数,确保像ICE DB Name这类包含逗号的字段会被正确用引号包裹,避免后续读取出错:
import csv
df.to_csv('building_materials_DB.csv', index=False, sep=',', quoting=csv.QUOTE_NONNUMERIC)

另外,读取文件时建议也显式指定分隔符为逗号,避免pandas自动识别错误:

df = pd.read_csv('building_materials_DB.csv', sep=',')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:02:35