更改我的df的值类型

时间:2017-08-16 17:32:06

标签: pandas

我有一个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

如何更改值的类型以便使用值列进行操作?

1 个答案:

答案 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=',')