![](/img/trans.png)
[英]How to convert a string in pandas dataframe into float or int
[英]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.