我有一个包含2列的df * 总空闲时间和 月 ,如下所示:
Total Idle Time Month
0 0:00:00 December
1 0:02:24 December
2 26:00:00 December
3 0:53:05 December
4 28:03:39 December
这里 总空闲时间 列为字符串格式,但是我想将其转换为时间格式,因为我想添加月份的总空闲时间十二月。
我尝试将列转换为日期时间,如下所示:
data['Total Idle Time '] = pd.to_datetime(data['Total Idle Time '], format='%H:%M:%S')
但是,我收到如下错误:
time data '28:03:39' does not match format '%H:%M:%S' (match)
我曾想过将列转换为int并根据小时和分钟将它们相加,但是这样做并不成功。有什么办法做这件事吗?
答案 0 :(得分:3)
您可以在此处尝试使用pd.to_timedelta()
>
>>> df['Idle Time'] = pd.to_timedelta(df["Idle Time"])
>>> df
Total Idle_Time Month
0 0 0 days 00:00:00 December
1 1 0 days 00:02:24 December
2 2 1 days 02:00:00 December
3 3 0 days 00:53:05 December
4 4 1 days 04:03:39 December
如果需要,可以通过缩放.total_seconds()
的结果来使用它转换为数字:
# in hours, 3
>>> df['Idle Time'] = df['Idle Time'].dt.total_seconds() / 3600
>>> df
Total Idle_Time Month
0 0 0.000000 December
1 1 0.040000 December
2 2 26.000000 December
3 3 0.884722 December
4 4 28.060833 December