Bootstrap

pandas的dataframe如何更改数据类型?

pandas的dataframe数据类型转换

在使用pandas库进行数据分析时,有时候会需要将object类型转换成数值类型(float,int),那么如何做呢?

主要有以下三种方法:创建时指定类型,df.astype强制类型转换,以及使用pd.to_numeric() 转换成适当数值类型。

一,创建时指定类型

import numpy as np 
import pandas as pd 

dfx = pd.DataFrame([["11",1.2,3],['22',4.8,5]],
                   columns = list('abc'),
                   dtype = object)
dfx.dtypes

 

二,使用df.astype()强制类型转换

#强制类型转换
dfx[['a','b','c']] = dfx[['a','b','c']].astype('float32')
dfx.dtypes 

 

,使用pd.to_numeric() 转换成适当数值类型

import pandas as pd 
dfy = pd.DataFrame([["11",1.2,3],['22',4.8,'?']],
                   columns = list('abc'),
                   dtype = object)

# 将某列转换成数值类型,  pd.to_numeric只能作用到单列
dfy['a'] =  pd.to_numeric(dfy['a'])

# 利用apply将它作用到整个dataframe,遇到错误时候忽略,不予转换该列
dfy1 = dfy.apply(pd.to_numeric, errors = 'ignore')
print(dfy1.dtypes)

# 遇到错误时候转换成nan
dfy2 = dfy.apply(pd.to_numeric, errors = 'coerce')
print(dfy2.dtypes)

# 遇到错误时候报错
dfy3 = dfy.apply(pd.to_numeric, errors = 'raise')

 

 

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;