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

如何解决Python中Dataframe调用to_numeric转换后返回NaN的问题

问题根因

你的数据中浮点数使用逗号作为小数分隔符,而pd.to_numeric函数默认仅识别英文句号.作为小数分隔符,无法解析带逗号的数值字符串,搭配errors='coerce'参数后,所有无法解析的内容都会被强制转换为NaN,就出现了全列空值的情况。

解决方案

方案1:读取文件时直接解析(最优)

欧洲格式的CSV通常使用分号作为列分隔符、逗号作为小数分隔符,直接在pd.read_csv中添加decimal=','参数即可在读取阶段直接将数据解析为数值类型,无需后续二次转换:

import pandas as pd

data = pd.read_csv('file.csv', engine='python', delimiter=';', decimal=',')

方案2:已读入数据后处理

如果数据已经读入内存,不想重复读取文件,可以先将列中的逗号替换为英文句号,再执行数值转换:

for i in data.columns :
    data[i] = pd.to_numeric(data[i].str.replace(',', '.'), errors='coerce')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:15:02