pandas - 将列转换为分钟值

时间:2017-07-13 14:56:18

标签: python 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:值必须是Timedelta,string,integer,float,timedelta   或可转换的

错误

1 个答案:

答案 0 :(得分: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]
如果你有更多“不寻常”的缩写词,那么你可能想要更多替换......