Проблема с query запросом в pandas. Выводит только верхнее значение

такая проблема. Есть таблица в пандасе, есть столбец с датой временем формата "2010-01-01 00:00:00". Новая строка создается каждый час, т.е. на каждый день таблица имеет по 24 строки. Хочу через query вывести все строки за определенный день указав в запросе дату, но пандас почему то вместо 24 строк выводит только одну. Не понимаю почему он так делает? Это какой то баг или что я делаю не так?. Вывести все 24 строки получается только есть в запросе указать интервал от одной даты до другой, но это слишком громоздко введите сюда описание изображения


Ответы (1 шт):

Автор решения: strawdog

Разумеется, вы делаете "что-то не так". Нельзя сравнивать объект datetime со строкой. pandas пытается привести эту строку к datetime и получает не то, что вам нужно (НЕ объект date):

pd.to_datetime("2010-01-01")

Timestamp('2010-01-01 00:00:00')

разумеется, такому datetime будет соответствовать только первая строчка на эту дату.

Делайте по-другому:

df[df["timestamp"].dt.date == pd.to_datetime("2010-01-01")]

либо, если вам очень хочется использовать query:

mydate = pd.to_datetime("2010-01-01")
df.query('timestamp.dt.date == @mydate')
→ Ссылка