Python 熊猫阅读科学符号和变化
我在pandas中有一个数据帧,我正在从csv中读取它 我的一个列的值包括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
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)