Мне не удалось решить проблему конвертации / сравнения дат и времени со ссылкой на все соответствующие сообщения. например, Сравнение даты и времени в python Я привык к R, пытаясь переместить мой код в Python, и давайте посмотрим правде в глаза, это был кошмар с проблемами сравнения даты и времени в Python. Природный музей уродства.
Прежде всего, я пытаюсь преобразовать несколько столбцов даты в кадре данных (в строковом формате) в datetime.date (да, только тип даты, так как меня интересует только компонент даты)
Самое близкое, к чему я пришел, - это использование функции pd.to_datetime (). который по какой-то причине преобразует данные в datetime64, а не в datetime.datetime или datetime.date
Я не нашел способа напрямую преобразовать строку в datetime.date, почему это важно?
Допустим,
today = date.today()
type(today)
Out[242]: datetime.date
Я хочу сравнить преобразованный столбец даты с переменной сегодня. это легко сделать в R без головной боли. почему это так сложно в Python?
>> data = [
['2020-01-01', '2020-02-01', '2020-03-01', 'A']
,['2019-01-01', '2019-02-01', '2019-03-01', 'B']
,['2018-01-01', '2018-02-01', '2018-03-01', 'C']
,['2017-01-01', '2017-02-01', '2017-03-01', 'D']
]
>> df = pd.DataFrame(data, columns = ['Col1', 'Col2', 'Col3', 'Col4'])
>> df
Out[249]:
Col1 Col2 Col3 Col4
0 2020-01-01 2020-02-01 2020-03-01 A
1 2019-01-01 2019-02-01 2019-03-01 B
2 2018-01-01 2018-02-01 2018-03-01 C
3 2017-01-01 2017-02-01 2017-03-01 D
определить столбцы даты
>> date_cols = ['Col1', 'Col2', 'Col3']
преобразовать столбцы даты из строки в pd.datetime
>> df.loc[:, date_cols] = df.loc[:, date_cols].apply(pd.to_datetime, format = '%Y-%m-%d', errors='coerce')
This преобразует столбцы даты в тип datetime64. Почему тип не datetime? и как я могу преобразовать это в datetime.date? Я попытался сравнить сегодня с этими столбцами даты, и это не работает. это довольно большой набор данных, поэтому я не хочу сравнивать даты в строковом формате. или это лучший способ? Какой самый эффективный способ сравнить компоненты даты друг с другом? Меня особенно интересует тип datetime.date. сравнение datetime64 с datetime.date или datetime.datetime с типом datetime.date.