繁体   English   中英

Python Pandas将字符串转换为int / float

[英]Python Pandas Convert String to int/float

我正在尝试处理一个熊猫数据框,以使“数量”列从字符串(“ hh.hh'hours'”)转换为int或float。

我想知道在这种情况下的最佳做法是什么。 我尝试了pd.to_numeric(),但是没有成功。 我认为我的问题在于每个字符串结尾处的“小时数”。

是否有另一个函数可以识别数字字符,而只是忽略字符串的“小时”部分,还是在使用内置dtype转换函数(pd.to_numeric)之前首先需要修剪掉最后5个字符? 谢谢!

           day  amount
2018-08-23  3   24.00 hours
2018-08-24  4   8.00 hours
2018-08-25  5   32.00 hours
2018-08-26  6   24.00 hours
2018-08-27  0   24.00 hours

只需使用字符串方法即可获取重要的数字。 根据列的混乱程度或格式,有很多可用的选项:

import pandas as pd

df['amount'] = pd.to_numeric(df.amount.str.replace('hours', ''), downcast='integer')
# or 
df['amount'] = pd.to_numeric(df.amount.str[:-5], downcast='integer')
# or
df['amount'] = pd.to_numeric(df.amount.str.extract('(\d+\.?\d*)')[0], downcast='integer')

所有输出:

            day  amount
2018-08-23    3      24
2018-08-24    4       8
2018-08-25    5      32
2018-08-26    6      24
2018-08-27    0      24

根据数据的完整性,可以使用pd.to_timedelta将其转换为duration(timeDelta):

>>>df.amount=pd.to_timedelta(df.amount)
>>>df

    date      day   amount
0   2018-08-23  3   1 days 00:00:00
1   2018-08-24  4   0 days 08:00:00
2   2018-08-25  5   1 days 08:00:00
3   2018-08-26  6   1 days 00:00:00
4   2018-08-27  0   1 days 00:00:00

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM