You need to enable JavaScript to run this app. pandas read_csv读取逗号分隔CSV无法正确分列的原因是否为编码问题
优惠活动
大模型
产品
解决方案
定价
更多

pandas read_csv读取逗号分隔CSV无法正确分列的原因是否为编码问题

问题根因判定

这个问题和你设置的latin-1编码完全无关。
encoding='latin-1'的作用是把文件存储的字节流解码成可识别的文本,解决土耳其语特殊字符的乱码问题,整个解码过程不会改动逗号这类分隔符的本身属性,也不会干扰pandas对分隔符的识别逻辑,根本不存在编码设置导致拆分失败的可能性。

拆分失效的真实原因,对着运行输出的特征就能直接定位:

  • 跑完代码后pandas压根没对任何分隔符做拆分,把整行内容全塞到了第一列里。结合文件里的数值格式(示例值23.137,18,点当千分位分隔符、逗号当小数点),这类从土耳其当地业务系统导出的CSV,实际都是用分号;当列分隔符的——要是真用逗号当列分隔符,数值内部当小数点用的逗号会把字段拆得七零八落,导出程序会自动换成分号当列分隔符。你一直用pandas默认的逗号拆分规则,自然识别不对。
  • 输出结果里的双引号细节也能佐证这个判断:列头、数据值外层带的引号,就是因为pandas把整行识别成单个字符串的时候,把原本包裹在每个独立字段外面的双引号也当成了普通文本,才会出现引号没被正常剥离的现象。
修复方案

调整read_csv的匹配参数,对齐文件的实际格式就行:

df = pd.read_csv(
    "UECM_5year.csv",
    encoding="latin-1",
    sep=";",
    thousands=".",
    decimal=","
)

各参数的作用:

  • sep=";":匹配文件实际的分号列分隔规则
  • thousands=".":指定数值里的点是千分位标记
  • decimal=",":指定数值里的逗号是小数点标记
    调完之后pandas会自动把字段外面的双引号剥掉,正确拆分开每一列,同时把数值字段识别为数字类型,再也不会出现整行挤在一列里的问题。

内容的提问来源于stack exchange,提问作者Emin Baybars Timur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 15:15:04