как добавить или сохранить часы выше 23 в pandas

#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