изменить дату и время с 00:00:00 на 24:00:00 - PullRequest
0 голосов
/ 25 января 2019

У меня есть почасовые данные, которые начинаются с 00 до 23 часов каждый день.То, что я пытаюсь сделать, - это переключать с 00 на 24 предыдущего дня для каждой даты.

Вот пример данных:

import pandas as pd    

data = {'datetime' : ['19DEC08:22:00:00', '19DEC08:23:00:00', '20DEC08:00:00:00', '20DEC08:01:00:00', '20DEC08:02:00:00'],
         'entry' : ['a','b','c','d','e']}
df = pd.DataFrame(data)

В этом примере я хочу изменить '20DEC08: 00: 00: 00' на '19DEC08: 24: 00: 00', а также, Я хочу одно и то же для 21Dec08 и 22Dec08 и так далее для каждого 00: 00: 00.

Есть ли питонский способ сделать это ??

1 Ответ

0 голосов
/ 25 января 2019

Поскольку DateTime не позволяет использовать 24-й час (т. Е. Идет с 00:00:00 - 23:59:59), лучший способ сделать это - преобразовать строку в дату и время обратно в строку.

import calendar

def add_24th_hour(row):
    date = row['datetime']
    if date.hour == 00:
        hour = 24
        day = date.day -1
        return "{:02d}{}{:02d}:{:02d}:{:02d}:{:02d}".format(day, 
                                                            calendar.month_abbr[date.month], 
                                                            date.year, 
                                                            hour, 
                                                            date.minute, 
                                                            date.second)
    else:
        return "{:02d}{}{:02d}:{:02d}:{:02d}:{:02d}".format(date.day, 
                                                            calendar.month_abbr[date.month], 
                                                            date.year, 
                                                            date.hour, 
                                                            date.minute, 
                                                            date.second)

df['datetime'] = pd.to_datetime(df['datetime'], format = '%d%b%y:%H:%M:%S')
df.loc[:,'24hr_datetime'] = df.apply(add_24th_hour, axis=1)

Я не понимаю, как это будет использоваться на практике, но было интересно переформатировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...