Как я могу отфильтровать фрейм данных дат с другой датой в python?

У меня есть этот фреймворк на Python, сделанный в пандах:

        0
0   2018-06-29
1   2018-10-29
2   2019-02-28
3   2019-06-29
4   2019-10-29
5   2020-02-29
6   2020-06-29
7   2020-10-29
8   2021-02-28

Затем у меня есть свидание, которое будет следующим:

[datetime.date(2020, 2, 29)]

Я хочу отфильтровать фрейм данных, чтобы получить только те даты, которые <= той даты, которая у меня есть. Я попробовал это с помощью loc [], но получил следующий результат:

Seleccion = df.loc[df[0] < date]
Arrays were different lengths: 9 vs 1

Я не знаю, есть ли способ сделать это, но если это так, любая помощь будет идеальной. Спасибо, что нашли время.

Вам не нужен .iloc, просто сделайте selection = df[df['0'] < date]

T Burgis 31.10.2018 12:16

Результат тот же @TBurgis

Amartin 31.10.2018 12:20

См. Ответ ниже. Мой комментарий правильный.

T Burgis 31.10.2018 12:41
0
3
147
1

Ответы 1

Какое значение имеет "дата" в вашем примере? Если это

date = [datetime.date(2020, 2, 29)]

тогда это нормально, ошибка возникает из-за того, что вы сравниваете серию с массивом.

Что ты хочешь сделать, это

date = datetime.date(2020, 2, 29)
df[df[0] < date]

потому что теперь вы сравниваете серию с константой, и pandas может преобразовать ее в сравнение по строкам над серией.

До того, как вы сравнивали серию с массивом (даже если он имеет один элемент), и для того, чтобы это работало, массив должен иметь ту же длину, что и серия.

У вас опечатка в df.[df[0] < date], избавьтесь от .

T Burgis 31.10.2018 12:41

Это работает, но есть ли способ преобразовать массив в объект datetime.date? @TBurgis

Amartin 31.10.2018 12:55

Какую переменную вы называете «массивом»? Я предположил, что типом данных df [0] был объект datetime.date. Если вам нужно преобразовать его, используйте pd.to_datetime, а затем посмотрите ссылка.

VaM 31.10.2018 13:12

Другие вопросы по теме