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

Python处理CSV数据集时的浮点格式转换错误求助

解决CSV中逗号小数点转Python浮点数的报错问题

这问题我熟得很——你遇到的是典型的区域格式差异:欧洲很多国家用逗号作为小数点分隔符,而Python默认认点号,所以读进来的数值是字符串类型,后续转float自然就报ValueError: could not convert string to float: '21,5'了。

给你两个最实用的解决方案,优先选第一个:

方案1:读CSV时直接指定小数点符号

这是最高效的方式,不用后续额外处理。只需要在pd.read_csv()里加个decimal=','参数,pandas会自动把逗号识别成小数点,读出来直接就是float类型:

import pandas as pd
import numpy as np

# 关键修改:添加decimal参数,从源头解决格式问题
data = pd.read_csv('measurements.csv', decimal=',')
data.shape

# 后续代码正常执行即可
X = data.iloc[:, :-5].values
y = data.iloc[:, -4]
y = np.where(y == 'E10', 1, 0)
# 你的enc相关代码可以继续往下写,不会再因为数值格式报错

方案2:已读入数据后批量替换转换

如果已经把数据读进来了(没加decimal参数),可以用字符串替换把逗号换成点,再转成float:

# 批量处理所有字符串类型的数值列
for col in data.columns:
    if data[col].dtype == object:  # 判断是否为字符串格式的列
        data[col] = data[col].str.replace(',', '.').astype(float)

# 也可以单独处理某一列
# data['target_column'] = data['target_column'].str.replace(',', '.').astype(float)

优先选方案1,因为它从源头解决问题,避免后续可能的格式遗漏,执行效率也更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:37:37