pandas to_datetime не принимает '24' как время - PullRequest
1 голос
/ 15 апреля 2019

Время указано в формате ГГГГММДДЧЧ. Первый раз 2010010101, увеличивается на 1 час, достигает 2010010124, затем 2010010201.

    date
0   2010010101
1   2010010124
2   2010010201

df['date'] = pd.to_datetime(df['date'], format ='%Y%m%d%H')

Я получаю ошибку:

Объект 'int' является несделываемым

Если я запускаю:

df2['date'] = pd.to_datetime(df2['date'], format ='%Y%m%d%H', errors = 'coerce')

Все 24 часа помечены как NaT.

[before[1]

after

1 Ответ

1 голос
/ 15 апреля 2019

Время начинается с 00 (полночь) до 23, поэтому время 24 в вашей дате - 00 следующего дня. Одним из способов является определение пользовательского времени to_datetime для обработки формата даты.

df = pd.DataFrame({'date':['2010010101', '2010010124', '2010010201']})

def custom_to_datetime(date):
    # If the time is 24, set it to 0 and increment day by 1
    if date[8:10] == '24':
        return pd.to_datetime(date[:-2], format = '%Y%m%d') + pd.Timedelta(days=1)
    else:
        return pd.to_datetime(date, format = '%Y%m%d%H')

df['date'] = df['date'].apply(custom_to_datetime)  


    date
0   2010-01-01 01:00:00
1   2010-01-02 00:00:00
2   2010-01-02 01:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...