2017-07-13 52 views
2

嗨,我试图'清理'具有名为'持续时间'列的数据集。它具有这样的元件:pandas - 将列转换为分钟值

18 mins 
34 mins 
1 hr 51 mins 
1 day 1 hr 
1 day 2 hrs 32 mins 
3 days 4 hrs 48 mins 

换言之,大多数记录是数值(分钟),但一些具有表示天/小时文本的文本数据。我想将它们全部转化为分钟

我如何在熊猫中实现这一目标?理想情况下,我想使用一些库/函数来避免我必须标记字符串并手动解析/转换。

到目前为止,我一直在努力

data['Duration'] = pd.Timedelta(data['Duration']) 

,但我发现一个

ValueError: Value must be Timedelta, string, integer, float, timedelta or convertible

错误

回答

3

试试这个:

In [99]: pd.to_timedelta(df['Duration'].replace(['mins','hr','hrs'], 
               ['min','hour','hour'], 
               regex=True)) 
Out[99]: 
0 0 days 00:18:00 
1 0 days 00:34:00 
2 0 days 01:51:00 
3 1 days 01:00:00 
4 1 days 02:32:00 
5 3 days 04:48:00 
Name: x, dtype: timedelta64[ns] 

PS你可能想要做更多的替换你有更多“不寻常”的缩写...

+0

完美,谢谢! – user1361529

+0

@ user1361529,很高兴我能帮忙:-) – MaxU

+0

太棒了!回答 – piRSquared