我有一个df:
0
venta 0,00
Infra 0,00
Neutr 14,00
Sobre 2,00
Fuerte 11,00
df由数组构成,type(df.values)
为<class 'numpy.ndarray'>
。
我认为值类解释了为什么我无法将df值转换为floats
。
如何更改值的类型以便使用值列进行操作?
答案 0 :(得分:2)
我认为首先需要replace
,
到.
,然后按astype
进行投射。
#if numeric column change '0' to 0 only
df['0'] = df['0'].replace(',','.', regex=True).astype(float)
#alternative
#df['0'] = df['0'].str.replace(',','.').astype(float)
print (df)
0
venta 0.0
Infra 0.0
Neutr 14.0
Sobre 2.0
Fuerte 11.0
但是,如果某些非数字数据需要to_numeric
且参数为errors='coerce'
,则将其替换为NaN
s:
df['0'] = pd.to_numeric(df['0'].replace(',','.', regex=True), errors='coerce')
print (df)
0
venta 0.0
Infra 0.0
Neutr 14.0
Sobre 2.0
Fuerte 11.0
如果使用read_csv
功能,可以使用decimal
参数更改默认值decimal='.'
:
df = pd.read_csv(filename, decimal=',')