Это то, что вам нужно? (Count не будет считать NaN
, поэтому мы заменяем '' на np.nan
)
df.val=df.val.replace('',np.nan)
df
Out[243]:
g val
0 1 a
1 1 NaN
2 2 b
3 2 NaN
4 2 c
5 3 NaN
df.groupby('g').val.count().median()
Out[245]: 1.0
Фильтр перед групповым
df[df.val.isin(['','somethingealse'])].groupby('g').val.count().median()