您好我正在尝试“清理”一个名为“持续时间”列的数据集。它有这样的元素:
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 或可转换的
错误
答案 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]
如果你有更多“不寻常”的缩写词,那么你可能想要更多替换......