safex
safex

Reputation: 2514

python pandas query date variable in quarterly format

I need to query a panda dataframe handed to me which contains a quarterly date format.

Data

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'))

Code

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

results in an empty dataframe.

Upvotes: 1

Views: 323

Answers (1)

jezrael
jezrael

Reputation: 862761

For me working if compare by quarter period:

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

If use boolean indexing it working correct:

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

Upvotes: 2

Related Questions