Le comte de valeurs uniques à l'aide de pandas groupby

J'ai des données de la forme suivante:

df = pd.DataFrame({
    'group': [1, 1, 2, 3, 3, 3, 4],
    'param': ['a', 'a', 'b', np.nan, 'a', 'a', np.nan]
})
print(df)

#    group param
# 0      1     a
# 1      1     a
# 2      2     b
# 3      3   NaN
# 4      3     a
# 5      3     a
# 6      4   NaN

Les valeurs Non null dans les groupes sont toujours les mêmes. Je veux compter le non-valeur null pour chaque groupe (lorsqu'il existe) une fois, et ensuite trouver le nombre total de comptes pour chaque valeur.

Je suis actuellement en train de faire cela dans la suite (maladroit et inefficace):

param = []
for _, group in df[df.param.notnull()].groupby('group'):
    param.append(group.param.unique()[0])
print(pd.DataFrame({'param': param}).param.value_counts())

# a    2
# b    1

Je suis sûr qu'il y a une manière de le faire plus proprement et sans l'aide d'une boucle, mais je n'arrive pas à s'en sortir. Toute aide serait grandement appréciée.

OriginalL'auteur user1684046 | 2017-01-01