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

使用pd.read_csv读取美联储SP500数据时遇小数点类型转换错误求助

解决pandas读取CSV时的数值转换错误

首先,咱们得明确问题根源:你看到的.不是小数点,而是CSV里用来标记缺失值的符号。pandas默认只把空字符串、NaN、null这类内容识别为缺失值,单独的.不在默认列表里,所以它会把这个符号当成普通字符串,尝试转成float时自然就报错了。

最快的解决方案:用na_values指定缺失值标记

直接在pd.read_csv()里加上na_values='.'参数,告诉pandas把单独的.当成缺失值处理,这样就能正常解析带小数点的价格数值了:

import pandas as pd
df = pd.read_csv('sp500.csv', na_values='.')

进阶:指定列数据类型(可选)

如果你想明确指定价格列的类型,可以搭配dtype参数一起用,确保万无一失:

df = pd.read_csv('sp500.csv', na_values='.', dtype={'价格': float})

备选方案:先加载为字符串再转换

如果上面的方法没生效(比如CSV里还有其他特殊格式),可以先把所有数据按字符串加载,手动替换.为缺失值后再转换类型:

df = pd.read_csv('sp500.csv', dtype=str)
# 替换单独的'.'为pandas缺失值,再转成float
df['价格'] = df['价格'].replace('.', pd.NA).astype(float)

你之前处理的CSV没问题,是因为那些文件里的小数点是数值的一部分(比如3456.78),pandas能正确识别这种格式;但这次的.是单独存在的,属于缺失值标记,不在默认识别范围内,才会触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:38:54