So my code is as follows:
df[\'Dates\'][df[\'Dates\'].index.month == 11]
I was doing a test to see if I could filter the months so it only
pd.to_datetime & dt accessorThe accepted answer is not the "pandas" way to approach this problem.
To select only rows with month 11, use the dt accessor:
# df['Date'] = pd.to_datetime(df['Date']) -- if column is not datetime yet
df = df[df['Date'].dt.month == 11]
Same works for days or years, where you can substitute dt.month with dt.day or dt.year
Besides that, there are many more, here are a few:
dt.quarterdt.weekdt.weekdaydt.day_namedt.is_month_enddt.is_month_startdt.is_year_enddt.is_year_startFor a complete list see the documentation
Map an anonymous function to calculate the month on to the series and compare it to 11 for nov. That will give you a boolean mask. You can then use that mask to filter your dataframe.
nov_mask = df['Dates'].map(lambda x: x.month) == 11
df[nov_mask]
I don't think there is straight forward way to filter the way you want ignoring the year so try this.
nov_mar_series = pd.Series(pd.date_range("2013-11-15", "2014-03-15"))
#create timestamp without year
nov_mar_no_year = nov_mar_series.map(lambda x: x.strftime("%m-%d"))
#add a yearless timestamp to the dataframe
df["no_year"] = df['Date'].map(lambda x: x.strftime("%m-%d"))
no_year_mask = df['no_year'].isin(nov_mar_no_year)
df[no_year_mask]
In your code there are two issues. First, need to bring column reference after the filtering condition. Second, can either use ".month" with a column or index, but not both. One of the following should work:
df[df.index.month == 11]['Dates']
df[df['Dates'].month == 11]['Dates']