Наряду с ответом выше, это также работает. Этот код может быть менее запутанным, хотя.
Поскольку нам не нужны данные за март по вашему вопросу:
df = df[(df.Month != 'Mar')]
def True_Or_Not(df):
Result = df['Snowed'].all(axis=None) == True
df['Result'] = Result
return df
Столбец Год года и столбец агрегированного месяца, чтобы определить, являются ли все значения истинными
df = df.groupby(['Year']).apply(lambda df: True_Or_Not(df)).reset_index().drop(columns = ['index'])
df['Tag'] = ['Good' if i== False else 'Bad' for i in df.Result.tolist()]
ВЫВОД:
Tag Year Month Snowed Result
0 Good 2001 Jan True False
1 Good 2001 Feb False False
2 Bad 2002 Jan True True
3 Bad 2002 Feb True True