Python 熊猫阅读科学符号和变化

Python 熊猫阅读科学符号和变化,python,csv,pandas,Python,Csv,Pandas,我在pandas中有一个数据帧,我正在从csv中读取它 我的一个列的值包括NaN、float和科学记数法,即5.3e-23 我的问题是,当我读取csv时,pandas将这些数据视为对象数据类型,而不是它应该是的float32。我猜是因为它认为科学符号是字符串 在读入数据类型后,我尝试使用df['speed'].astype(float)转换该数据类型,并尝试使用df=pd.read\u csv('path/test.csv',dtype={'speed':np.float64},na_value

我在pandas中有一个数据帧,我正在从csv中读取它

我的一个列的值包括
NaN
float
和科学记数法,即
5.3e-23

我的问题是,当我读取csv时,pandas将这些数据视为
对象数据类型
,而不是它应该是的
float32
。我猜是因为它认为科学符号是字符串


在读入数据类型后,我尝试使用
df['speed'].astype(float)
转换该数据类型,并尝试使用
df=pd.read\u csv('path/test.csv',dtype={'speed':np.float64},na_value=['n/a'])指定正在读入的数据类型。
。这会引发错误
ValueError:无法安全地转换传递的用户数据类型如果不查看您的数据,很难说,但您的行中似乎存在一个问题,即它们包含除数字和“n/a”值以外的其他内容。您可以加载数据帧,然后将其转换为数字,如问题答案中所示。如果您有pandas版本>=
0.17.0
,则可以使用以下内容:

df1 = df.apply(pd.to_numeric, args=('coerce',))

然后,您可以使用NA值删除行,或者使用

将它们填充为零。我意识到是
无穷
语句导致了我的数据中的问题。使用“查找并替换”按钮删除此项已奏效

@安东·普罗托波夫的回答也适用于@DSM关于我没有键入
df['speed']=df['speed'].astype(float)
的评论

谢谢你的帮助。

在我的情况下,使用工作过的


你能展示一下你的数据框中的数据吗?我不能重现那个问题。阅读科学记数法的价值观似乎很有效。你能提供一个小样本数据集来演示这个问题吗?你确定数据中没有其他值导致错误吗?@BrenBarn,@Anton Protopopov,你认为是
无穷大
造成的吗?通过“尝试转换数据类型”,你的意思是你只需键入
df['speed'].astype(float)
?因为
df['speed']=df['speed'].astype(float)
应该可以工作。
inf
可以工作,但不能
Infinity
。有人要求支持
无限
,但尚未得到处理。
df1 = df.apply(pd.to_numeric, args=('coerce',))
df['column'] = df['column'].round(2)