Модуль datetime. Как изменить формат "объект" на формат "дата"?

AleksN

Новичок
Пользователь
Дек 7, 2020
3
0
1
Очень нужна помощь. Загрузил базу в формате .csv
Все поля распознались как объекты. Два столбца содержат данные о дате события и один столбец о времени события. Даты записаны в формате DD.MM.YYYY. Пытаюсь изменить формат этих столбцов, чтобы в дальнейшем вычислить timedelta. Пишу код:

from datetime import date, datetime, time
base_20['DateB'] = pd.to_datetime(base_20['DateB'], format=('%d.%m.%Y')) #Преобразуем в дату
base_20['DateD'] = pd.to_datetime(base_20['DateD'], format=('%d.%m.%Y'))
base_20['timeD'] = pd.to_datetime(base_20['timeD'], format=('%H:%M'))
base_20.info()

В ответ получаю:
ValueError: time data 'DateB' does not match format '%d.%m.%Y' (match)

Перепробовал массу других вариантов. Пока ничего не получается :(
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
а точно там DD.MM.YYYY ?
может DD.MM.YY, тогда так надо format=('%d.%m.%y')
 

AleksN

Новичок
Пользователь
Дек 7, 2020
3
0
1
Точно. Формат "24.05.2017".
Обнаружил, что когда файл считывается, первая строка в датафрейме дублирует заголовки столбцов. Может Python "спотыкается" о них?
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Точно. Формат "24.05.2017".
Обнаружил, что когда файл считывается, первая строка в датафрейме дублирует заголовки столбцов. Может Python "спотыкается" о них?
Файл не считывается, его считываешь ты командой, и вводишь (или не вводишь) какие-то параметры. Питон не спотыкается, он змея без ног. Он делает то, что ему сказали. Что у тебя происходит неизвестно без первых 3 строк файла и кода, которым ты его загружаешь.
 

AleksN

Новичок
Пользователь
Дек 7, 2020
3
0
1
Проблема оказалась в пустых ячейках. Решил ее просто убрав эти строки из исходного файла. Код сработал :)
Зато теперь в голове крутиться вопрос - какой код написать, чтобы Питон распознавал данные в столбце как дату, а пустые ячейки - как пустые ячейки?
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
pd.read_csv(..., parse_dates=[колонки с датой])
 

Форум IT Специалистов