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

如何处理pandas read_csv中千分位逗号后位数不一致的转换问题

解决Pandas读取特殊千分位格式CSV的问题

你的CSV文件使用逗号作为千分位分隔符,但存在逗号后数字不足3位的异常格式(如1,23实际应为1230),Pandas默认的thousands参数无法识别这种非标准格式,会直接拼接数字导致错误。以下是无需手动检查位数的处理方案:

自定义转换函数处理特殊格式

编写一个自定义函数,自动将逗号后的部分补零至3位,再拼接成正确数值:

def parse_special_thousands(s):
    if ',' not in s:
        return float(s)
    # 分割整数段与逗号后的片段
    int_part, frac_part = s.split(',', 1)
    # 将逗号后片段补零到3位
    frac_part = frac_part.ljust(3, '0')
    # 拼接后转换为数值
    return float(int_part + frac_part)

应用到CSV读取

针对指定列处理

如果已知哪些列存在这种格式(例如列名为发电量),读取时通过converters参数指定该列使用自定义函数:

import pandas as pd

df = pd.read_csv(path_data, sep=';', decimal='.', converters={'发电量': parse_special_thousands})

批量处理所有数值列

若不确定目标列,可先按字符串读取所有列,再尝试批量转换:

# 全列以字符串类型读取
df = pd.read_csv(path_data, sep=';', dtype=str)
# 遍历列,对可转换为数值的列应用处理函数
for col in df.columns:
    try:
        df[col] = df[col].apply(parse_special_thousands)
    except (ValueError, TypeError):
        # 非数值列跳过转换
        continue

这个方案会自动处理所有带逗号的格式,无需手动检查逗号后位数,完美匹配你需要的转换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:32:36