Angenommen, ich habe einen Datenrahmen:DataFrameGroupBy diff() unter der Bedingung
df = pd.DataFrame({'CATEGORY':['a','b','c','b','b','a','b'],
'VALUE':[pd.np.NaN,1,0,0,5,0,4]})
, die es wie
CATEGORY VALUE
0 a NaN
1 b 1
2 c 0
3 b 0
4 b 5
5 a 0
6 b 4
I-Gruppe sieht:
df = df.groupby(by='CATEGORY')
Und jetzt lassen Sie mich zeigen, was ich will mit Hilfe von Beispiel für eine Gruppe 'b':
df.get_group('b')
Gruppe B:
CATEGORY VALUE
1 b 1
3 b 0
4 b 5
6 b 4
Ich brauche: Im Rahmen jeder Gruppe zählen diff() zwischen VALUE
Werte, Überspringen aller NaN
0
s und s. So sollte das Ergebnis sein:
CATEGORY VALUE DIFF
1 b 1 -
3 b 0 -
4 b 5 4
6 b 4 -1
Eigentlich diese nicht für Gruppen zu arbeiten. Der Fehler tritt auf, weil Sie das DataFrameGroupBy nicht "ersetzen" können. Ich habe es so umgeschrieben: '.apply (lambda x: np.NaN wenn x == 0)' aber das hat nicht geholfen; ( –
@LadenkovVladislav Die Antwort für deine 'groupby' wurde aktualisiert. – pansen
In python3 endet es mit' ' DataFrameGroupBy 'Objekt unterstützt keine Artikelzuweisung' –