Zählen eindeutiger Werte mithilfe von pandas groupby

Ich habe Daten in der folgenden form:

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

Nicht-null-Werte innerhalb der Gruppen sind immer die gleichen. Ich möchte die Anzahl der nicht-null-Wert für jede Gruppe (sofern vorhanden) einmal, und dann finden die gesamtaktivität für jeden Wert.

Ich bin derzeit dabei diese in den folgenden (klobig und ineffizient) Weg:

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

Ich bin sicher, es gibt eine Möglichkeit, dies zu tun mehr sauber und ohne Verwendung einer Schleife, aber ich kann einfach nicht scheinen, um es herauszufinden. Jede Hilfe wäre sehr geschätzt werden.

InformationsquelleAutor user1684046 | 2017-01-01
Schreibe einen Kommentar