Вы можете просто использовать .mean()
, так как numpy переводит логические значения в целые числа во время этой операции.
In [17]: import pandas as pd
In [18]: import numpy as np
In [19]: df = pd.DataFrame({'a': np.random.choice([True, False], size=10),
'b': np.random.choice(['x', 'y'], size=10)})
In [20]: df
Out[20]:
a b
0 False x
1 True y
2 False y
3 True x
4 True y
5 False y
6 False x
7 False y
8 True x
9 True y
In [21]: df.groupby(['b']).mean()
Out[21]:
a
b
x 0.5
y 0.5