Pandas中DataFrame数据类型转换

创建DataFrame

dfx = pd.DataFrame([['11', 1.2, 3], ['22', 4.8, 5]], columns=['a', 'b', 'c'])
print(dfx)
print(dfx.dtypes)
    a    b  c
0  11  1.2  3
1  22  4.8  5
a     object
b    float64
c      int64

创建时指定类型

通过 dtype=类型 来指定,会将DataFrame中的数据都转换成指定类型,不能转换的不转换。
缺点是,无法个性化指定 具体列的类型。

dfx = pd.DataFrame([['11', 1.2, 3], ['22', 4.8, 5]], columns=['a', 'b', 'c'], dtype=float)
print(dfx)
print(dfx.dtypes)

      a    b    c
0  11.0  1.2  3.0
1  22.0  4.8  5.0
a    float64
b    float64
c    float64
dtype: object

使用df.astype()类型转换

df.astype()可以指定具体的列的数据类型

dfx2 = pd.DataFrame([['11', 1.2, 3], ['22', 4.8, 5]], columns=['a', 'b', 'c'])
dfx2[['a', 'b']] = dfx2[['a', 'b']].astype(float)
print(dfx2)
print(dfx2.dtypes)

      a    b  c
0  11.0  1.2  3
1  22.0  4.8  5
a    float64
b    float64
c      int64
dtype: object

pd.to_numeric()自动转换成适当数值类型

pd.to_numeric()能根据数据情况,自动转换类型

errors='ignore' 表示遇到错误时忽略,不转换
errrors='coerce' 遇到错误时转换成Nan
errrors='coerce' 遇到错误时报错

dfx3 = pd.DataFrame([['11', 1.2, 3], ['22', 4.8, 5]], columns=['a', 'b', 'c'])
dfx3 = dfx3.apply(pd.to_numeric, errors='ignore')
print(dfx3)
print(dfx3.dtypes)

    a    b  c
0  11  1.2  3
1  22  4.8  5
a      int64
b    float64
c      int64
dtype: object

你可能感兴趣的:(Pandas中DataFrame数据类型转换)