gruppiert ist mein Problem zu veranschaulichen, ich habe ein Beispiel DatenrahmenPython Pandas bedingte Summe auf Datenrahmen, die auf mehrere Spalten
df = pd.DataFrame({'key1': [0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
'key2': ['a', 'b', 'b', 'c', 'a', 'a', 'a', 'b', 'b', 'c'],
'key3': [10, 5, 15, 10, 5, 10, 20, 10, 20, 5],
'zdata': [2, 4, 2, 4, 3, 5, 6, 5, 5, 6]})
die, wenn sie
df1 = df.groupby(['key1', 'key2', 'key3'])
df1 = df1.agg({'zdata' : [np.mean]})
zdata
mean
key1 key2 key3
0 a 10 2
b 5 4 * (new group1)
15 2 * (new group1)
c 10 4
1 a 5 3 * (new group2)
10 5 * (new group2)
20 6 * (new group2)
b 10 5
20 5
c 5 6
produziert ich jetzt müssen den Mittelwert von zdata und key3 finden, indem key1 und key2 nur dann gruppiert werden, wenn key3 eine '5' und eine zusätzliche Zahl (d. h . die Zeilen mit einem * in der obigen Tabelle markiert)
So würden das gewünschte Ergebnis
zdata
mean
key1 key2 key3
0 b 10 3
1 a 11.6 4.6
sein, die ich bin sicher, eine Lambda-Funktion wie in diesem Beispiel dort wird [Python Pandas Conditional Sums aber dieses Problem auf mehreren Spalten gruppiert
Jede Hilfe würde sehr geschätzt werden.