Требуется группировка по year
с и month
с:
#changed data for better sample
print (data)
Values
Date
2015-07-20 10.0
2015-05-20 20.0
2016-05-20 2.0
2018-05-22 1.0
2018-05-22 3.0
2018-07-22 4.0
df1 = data.groupby([data.index.year, data.index.month])['Values'].sum()
print (df1)
Date Date
2015 5 20.0
7 10.0
2016 5 2.0
2018 5 4.0
7 4.0
Name: Values, dtype: float64
Ваше решение группируется по логической маске, True
фильтруется только 2018
лет, а False
свсе не 2018
строки, аналогичные для month
s:
df2 = data.groupby([(data.index.year==2018),(data.index.month==5)])['Values'].sum()
print (df2)
False False 10.0
True 22.0
True False 4.0
True 4.0
Name: Values, dtype: float64
Если можно использовать только отфильтрованные значения, используйте:
df = data[(data.index.year==2018) & (data.index.month==5)]
print (df)
Values
Date
2018-05-22 1.0
2018-05-22 3.0
out = df.groupby([df.index.year, df.index.month])['Values'].sum()
print (out)
Date Date
2018 5 4.0
Name: Values, dtype: float64