Reputation: 2514
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
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