#python #pandas
#python #pandas
Вопрос:
У меня есть df, содержащий 2 столбца * Общее время простоя и месяц, как показано ниже:
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
Здесь столбец общего времени простоя имеет строковый формат, но я хочу преобразовать его в формат времени, поскольку я хочу добавить общее время простоя в декабре месяце.
Я попытался преобразовать столбец в datetime, как показано ниже:
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 и добавлении их на основе часов и минут, но мне это не удалось. Есть ли какой-нибудь способ сделать это?
Ответ №1:
Вы могли бы попробовать использовать 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
>>> 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