python将object转换为float_如何在python中将datatype:object转换为float64?

I am going around in circles and tried so many different ways so I guess my core understanding is wrong. I would be grateful for help in understanding my encoding/decoding issues.

I import the dataframe from SQL and it seems that some datatypes:float64 are converted to Object. Thus, I cannot do any calculation. I fail to convert the Object back to float64.

df.head()

Date WD Manpower 2nd CTR 2ndU T1   T2   T3   T4

2013/4/6 6 NaN 2,645 5.27% 0.29 407 533 454 368

2013/4/7 7 NaN 2,118 5.89% 0.31 257 659 583 369

2013/4/13 6 NaN 2,470 5.38% 0.29 354 531 473   383

2013/4/14 7 NaN 2,033 6.77% 0.37 396 748 681 458

2013/4/20 6 NaN 2,690 5.38% 0.29 361 528 541 381

df.dtypes

WD float64

Manpower float64

2nd object

CTR object

2ndU float64

T1 object

T2 object

T3 object

T4 object

T5 object

dtype: object

SQL table:

解决方案

You can convert most of the columns by just calling convert_objects:

In [36]:

df = df.convert_objects(convert_numeric=True)

df.dtypes

Out[36]:

Date object

WD int64

Manpower float64

2nd object

CTR object

2ndU float64

T1 int64

T2 int64

T3 int64

T4 float64

dtype: object

For column '2nd' and 'CTR' we can call the vectorised str methods to replace the thousands separator and remove the '%' sign and then astype to convert:

In [39]:

df['2nd'] = df['2nd'].str.replace(',','').astype(int)

df['CTR'] = df['CTR'].str.replace('%','').astype(np.float64)

df.dtypes

Out[39]:

Date object

WD int64

Manpower float64

2nd int32

CTR float64

2ndU float64

T1 int64

T2 int64

T3 int64

T4 object

dtype: object

In [40]:

df.head()

Out[40]:

Date WD Manpower 2nd CTR 2ndU T1   T2 T3 T4

0 2013/4/6 6 NaN 2645 5.27 0.29 407 533 454 368

1 2013/4/7 7 NaN 2118 5.89 0.31 257 659 583 369

2 2013/4/13 6 NaN 2470 5.38 0.29 354 531 473   383

3 2013/4/14 7 NaN 2033 6.77 0.37 396 748 681 458

4 2013/4/20 6 NaN 2690 5.38 0.29 361 528 541 381

Or you can do the string handling operations above without the call to astype and then call convert_objects to convert everything in one go.

UPDATE

Since version 0.17.0 convert_objects is deprecated and there isn't a top-level function to do this so you need to do:

df.apply(lambda col:pd.to_numeric(col, errors='coerce'))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值