Укажите, что группировка должна выполняться явно для столбца b
.
df
group b
0 1 0
1 1 1
2 2 0
3 2 0
4 2 1
df.groupby('group')['b'].apply(_get_perc)
group
1 0.500000
2 0.333333
Name: b, dtype: float64
Этап предварительного индексирования не требуется.
В качестве альтернативы, value_counts
также может быть вызван непосредственно на Series
:
df.groupby('group')['b'].value_counts(normalize=True).xs(1, level=1, axis=0)
group
1 0.500000
2 0.333333
Name: b, dtype: float64
Дополнительный шаг xs
состоит в выборе нормализованных значений 1 с.