Pandas to_datetime ошибка «остаются не преобразованные данные» - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь преобразовать столбец даты в моем Pandas DataFrame в формат даты и времени. Если я не укажу формат даты, он будет работать нормально, но затем в коде возникают проблемы из-за разных форматов времени.

Исходные даты выглядят так: 10/10/2019 6:00 в европейском формате даты.

Я попытался указать формат следующим образом:

df['PeriodStartDate'] = pd.to_datetime(df['PeriodStartDate'], 
          format="%d/%m/%Y")

, что привело к ошибке: unconverted data remains 6:00

Затем я попытался обновить директиву формата до format="%d/%m/%Y %-I/%H", которая появляетсяс другой ошибкой: '-' is a bad directive in format '%d/%m/%Y %-I/%H', хотя я думал, что to_datetime использует те же директивы и strftime, а в последнем %-I разрешено.

В отчаянии я решил отрубить конецстрока, так как мне действительно не нужны часы и минуты:

    df['PeriodStartDate'] = df['PeriodStartDate'].str[:10]
    df['PeriodStartDate'] = pd.to_datetime(df['PeriodStartDate'], 
          format="%d/%m/%Y")

Но это еще раз приводит к ошибке: ValueError: unconverted data remains:, что, конечно, связано с тем, что некоторые даты имеют 9 цифр, например 3/10/2019 6:00

Не совсем уверен, куда идти отсюда.

Ответы [ 2 ]

1 голос
/ 05 октября 2019

формат %H:%M будет работать ( не забудьте : между )

pd.to_datetime('10/10/2019 6:00', format="%m/%d/%Y %H:%M")

Out[1049]: Timestamp('2019-10-10 06:00:00')

pd.to_datetime('3/10/2019 18:00', format="%d/%m/%Y %H:%M")

Out[1064]: Timestamp('2019-10-03 18:00:00')
0 голосов
/ 05 октября 2019

О, я чувствую себя так глупо. Я понял, в чем проблема. Почему-то я думал, что часы были в 12-часовом формате, но на самом деле они были в 24-часовом формате, поэтому изменение директивы на "%d/%m/%Y %H:%M" решило это.

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