Краткий ответ: Я провел некоторые манипуляции со строками, чтобы уменьшить все часы на один час
df['temp_col'] = df['Date/Time,kWh'].str.split(':').str[0]
df['temp_col'] = (pd.to_numeric(df['temp_col']) - 1).astype(str)
df['temp_col'] = df['temp_col'].apply(lambda x: f'0{x}' if len(x)==1 else x)
df['temp_col'] = df['temp_col'] + df['Date/Time,kWh'].str[2:]
Вывод ниже не является чистым , потому что данные, которые вы разместили, не ' хорошо скопируйте с помощью pd.read_clipboard (), но это должно дать вам представление.
Date/Time,kWh temp_col
01/01 01:00:00,1.14168620105289 00:00:00,1.14168620105289
01/01 02:00:00,0.998495769210657 01:00:00,0.998495769210657
01/01 03:00:00,0.949679309420898 02:00:00,0.949679309420898
Более подробно: Я взял первую часть строки, где часы и создал столбец, преобразуя их в целое число и вычитая 1. Затем я добавил к нему оставшуюся часть строки. На ваш вопрос, это был бы один из способов получить часы до 0-23, а не 1-24. Звучит так, будто все прошло на «час позже, чем должно быть?» В противном случае, если вы хотите просто сделать 24:00 = 00:00 (не уверены, какой метод подходит для ваших данных) @dzakyputra прокомментировал сообщение. Вы также можете выполнить аналогичные манипуляции со строками, чтобы получить 24:00 до 00: 000, поэтому, надеюсь, это поможет вам решить.
Если вы хотите сделать его «однострочным», вы можете, но лучше разбить на шаги.
df['Date/Time,kWh'] = (pd.to_numeric(df['Date/Time,kWh'].str.split(':').str[0])-1).astype(str).apply(lambda x: f'0{x}' if len(x)==1 else x) + df['Date/Time,kWh'].str[2:]
Вывод:
Date/Time,kWh
01/01 00:00:00,1.14168620105289
01/01 01:00:00,0.998495769210657
01/01 02:00:00,0.949679309420898