Python pandas читает только дни при сравнении дат из csv

1

поэтому позвольте сказать, что это мой код:

df = pd.read_table('file_name', sep=';')
pd.Timestamp("today").strftime(%d.%m.%y)
df = df[(df['column1'] < today)]
df

Вот таблица из файла csv:

Column 1
27.02.2018
05.11.2018
22.05.2018
01.11.2018
01.08.2018
01.08.2018
16.10.2018
22.08.2018
21.11.2018

так как вы можете видеть, я импортировал таблицу из файла csv. Мне нужно только видеть даты до сегодняшнего дня (16.10.2018), но когда я запускаю код, это то, что я получаю

Column 1    
05.11.2018  
01.11.2018  
01.08.2018
01.08.2018

Это означает, что Python смотрит только на дни и игнорирует месяцы, и это неправильно. Мне нужно, чтобы понять, что это дата, а не только цифры. Что я могу сделать для этого?

PS Я новичок в Python

  • 0
    Он считает, что элементы являются строками .
  • 0
    pd.Timestamp("today").strftime(%d.%m.%y) недопустим. Я также подозреваю, что это не работает на месте. Использовать to_datetime
Показать ещё 1 комментарий
Теги:
pandas

1 ответ

0
Лучший ответ

Вы должны преобразовать свой столбец в тип даты, а не строки, поскольку строки сравниваются лексикографически.

Таким образом, вы можете преобразовать его с помощью:

# convert the strings to date(time) objects
df['column1'] = pd.to_datetime(df['column1'], format='%d.%m.%Y')

Затем вы можете сравнить его с объектом date, например:

>>> from datetime import date
>>> df[df['column1'] < date.today()]
     column1
0 2018-02-27
1 2018-05-11
2 2018-05-22
3 2018-01-11
4 2018-01-08
5 2018-01-08
7 2018-08-22 
  • 0
    Очень признателен!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню