python pandas переменная даты запроса в квартальном формате - PullRequest
1 голос
/ 09 июля 2020

Мне нужно запросить переданный мне фрейм данных панды, который содержит квартальный формат даты.

Данные

import pandas as pd
import datetime

table = [[datetime.datetime(2015, 1, 1), 1, 0.5],
         [datetime.datetime(2015, 1, 27), 1, 0.5],
         [datetime.datetime(2015, 1, 31), 1, 0.5],
         [datetime.datetime(2015, 4, 1), 1, 2],
         [datetime.datetime(2015, 4, 3), 1, 2],
         [datetime.datetime(2015, 4, 15), 1, 2],
         [datetime.datetime(2015, 5, 28), 1, 2],
         [datetime.datetime(2015, 5, 1), 1, 3],
         [datetime.datetime(2015, 5, 17), 1, 3],
         [datetime.datetime(2015, 8, 31), 1, 3]]

df = pd.DataFrame(table, columns=['Date', 'Id', 'Value']) 
df = df.assign(Date = lambda x: x.Date.dt.to_period('Q'))

Код

df.query("Date == '2015Q2'")

дает пустой фрейм данных.

1 Ответ

2 голосов
/ 09 июля 2020

У меня работает, если сравнивать по квартальному периоду:

df = df.query("Date == @pd.Period('2015Q2', 'Q')")
print (df)
     Date  Id  Value
3  2015Q2   1    2.0
4  2015Q2   1    2.0
5  2015Q2   1    2.0
6  2015Q2   1    2.0
7  2015Q2   1    3.0
8  2015Q2   1    3.0

Если использовать boolean indexing, он работает правильно:

df = df[df["Date"] == '2015Q2']
print (df)
     Date  Id  Value
3  2015Q2   1    2.0
4  2015Q2   1    2.0
5  2015Q2   1    2.0
6  2015Q2   1    2.0
7  2015Q2   1    3.0
8  2015Q2   1    3.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...