Данные о времени преобразования даты Панды «3-24 октября 20:54» не соответствуют формату «%d-%b-%Y %H:%M»

#python #pandas #python-datetime

Вопрос:

Фрейм данных содержит: «14-19 июля» Я пытаюсь преобразовать это в формат даты в Панд, используя

 df['Date'] = pd.to_datetime(df['Date'], format='%d-%b-%Y')
 

Столбец не содержит данных в каком-либо другом формате или пустых значений.

ПРОИЗОШЛА ОШИБКА:

 Traceback (most recent call last):
  File "C:UsersvakakadeAnaconda3envsautomationslibsite-packagespandascoretoolsdatetimes.py", line 456, in _convert_listlike_datetimes
    values, tz = conversion.datetime_to_datetime64(arg)
  File "pandas_libstslibsconversion.pyx", line 350, in pandas._libs.tslibs.conversion.datetime_to_datetime64
TypeError: Unrecognized value type: <class 'str'>
 

Во время обработки вышеуказанного исключения произошло еще одно исключение:

 Traceback (most recent call last):
  File "C:UsersvakakadeOneDrive - Qualys, IncWorkWork_Codevo-automationsrcwindows_script.py", line 41, in fetchDetails
    df['Date Time'] = pd.to_datetime(df['Date'], format='%d-%b-%Y')
  File "C:UsersvakakadeAnaconda3envsautomationslibsite-packagespandascoretoolsdatetimes.py", line 801, in to_datetime
    cache_array = _maybe_cache(arg, format, cache, convert_listlike)
  File "C:UsersvakakadeAnaconda3envsautomationslibsite-packagespandascoretoolsdatetimes.py", line 178, in _maybe_cache
    cache_dates = convert_listlike(unique_dates, format)
  File "C:UsersvakakadeAnaconda3envsautomationslibsite-packagespandascoretoolsdatetimes.py", line 460, in _convert_listlike_datetimes
    raise e
  File "C:UsersvakakadeAnaconda3envsautomationslibsite-packagespandascoretoolsdatetimes.py", line 423, in _convert_listlike_datetimes
    result, timezones = array_strptime(
  File "pandas_libstslibsstrptime.pyx", line 144, in pandas._libs.tslibs.strptime.array_strptime
ValueError: time data '3-Oct-24' does not match format '%d-%b-%Y' (match)
 

Комментарии:

1. используйте format='%d-%b-%y' — см. Коды форматов strftime() и strptime () (или «%d-%b-%y %H:%M», например, «3-24 октября 20:54»)

2. Не работает, попробовал.

3. Ваш шаблон выглядит так, как будто он ищет даты с 0 дополнениями, попробуйте %-d вместо %d, чтобы соответствовать 3.

4. @mids: это зависит от платформы; обычно это не требуется.

5. @mrfupps вы правы. И все же я пытался, но безуспешно

Ответ №1:

Пришлось пойти на обходной путь.
Решение

 df['Date'] = df['Date'].apply(lambda x: datetime.strptime(x, '%d-%b-%y %H:%M'))
 

Примечание: функция apply() не имеет места для переназначения столбца