DataFrameGroupby.filter
Methode filtert die Gruppen und gibt DataFrame
zurück, die die Zeilen enthält, die den Filter bestanden haben.Verkettungsgruppierung, Filterung und Aggregation
Aber was kann ich tun, um nach der Filtration ein neues DataFrameGroupBy
Objekt anstelle einer DataFrame
zu erhalten?
Zum Beispiel habe ich eine DataFrame
df
mit zwei Spalten A
und B
. Ich möchte B
Mittelwert der Spalte erhalten für jeden Wert der Spalte A
, solange es in dieser Gruppe mindestens 5 Zeilen ist:
# pandas 0.18.0
# doesn't work because `filter` returns a DF not a GroupBy object
df.groupby('A').filter(lambda x: len(x)>=5).mean()
# works but slower and awkward to write because needs to groupby('A') twice
df.groupby('A').filter(lambda x: len(x)>=5).reset_index().groupby('A').mean()
# works but more verbose than chaining
groups = df.groupby('A')
groups.mean()[groups.size() >= 5]
Aber ich möchte den Mittelwert für jede der Gruppen erhalten, nach der Filtration. Sie erhalten den Mittelwert des gesamten verbleibenden Datensatzes. – max
Ich denke, es wird falsche Ergebnisse produzieren ... Versuchen Sie einen anderen Datensatz, wo Sie mindestens zwei verschiedene Gruppen von Werten für 'A' haben würden – MaxU
hmm, ich bekomme unterschiedliche Ergebnis-Set mit Ihrer _hack_ Version ... – MaxU