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

Pandas使用to_csv导出csv文件后读取出现NaN值及内容错位问题

问题原因

错位及出现多余NaN的核心原因是Description列的内容本身包含逗号,CSV默认以逗号作为字段分隔符,pandas读取时会将带逗号的单字段误拆分为多个字段,最终导致列错位。你直接用办公软件打开CSV正常,是因为这类软件对带引号包裹的文本容错性更高,会自动识别内容中的逗号不属于分隔符。

解决方案

方案1:更换无冲突分隔符(最稳妥)

导出和读取时统一指定制表符作为分隔符,完全规避和内容中逗号的冲突:

import pandas as pd

# 导出
expenses.to_csv(
    path_or_buf='expenses.csv',
    index=False,
    header=["Description", "Debit"],
    encoding='utf-8',
    sep='\t'
)

# 读取,分隔符和导出保持一致
expenses = pd.read_csv(
    "expenses.csv",
    thousands=",",
    header=0,
    sep='\t'
)

方案2:保留逗号分隔,强制包裹文本字段

如果必须使用逗号作为分隔符,导出时开启全字段引用,用双引号包裹所有字段避免内容逗号被误判:

import pandas as pd
import csv

# 导出
expenses.to_csv(
    path_or_buf='expenses.csv',
    index=False,
    header=["Description", "Debit"],
    encoding='utf-8',
    quoting=csv.QUOTE_ALL
)

# 读取无需额外修改参数,pandas默认会识别引号包裹的字段
expenses = pd.read_csv("expenses.csv", thousands=",", header= 0)

排查补充

如果修改后仍有异常,可以在读取时增加on_bad_lines='warn'参数,定位到具体导致错位的行后针对性处理特殊字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:06:01