如何解决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
相关产品推荐
相关产品推荐

