Wie kann man eine Spalte eines Datenrahmens mit pandas-python rekursiv konstruieren?
Gib so einen Datenrahmendf
:
id_ val
11111 12
12003 22
88763 19
43721 77
...
Ich möchte eine Spalte hinzufügendiff
zudf
, und jede Zeile davon entspricht, sagen wir, demval
in dieser Zeile minus demdiff
in der vorherigen Zeile und multiplizieren Sie 0,4 und addieren Sie danndiff
am Vortag:
diff = (val - diff_previousDay) * 0.4 + diff_previousDay
Und diediff
in der ersten Reihe entsprichtval * 4
in dieser Reihe. Das heißt, das erwartetedf
sollte sein
id_ val diff
11111 12 4.8
12003 22 11.68
88763 19 14.608
43721 77 ...
Und ich habe versucht:
mul = 0.4
df['diff'] = df.apply(lambda row: (row['val'] - df.loc[row.name, 'diff']) * mul + df.loc[row.name, 'diff'] if int(row.name) > 0 else row['val'] * mul, axis=1)
Aber ich habe so einen Fehler:
TypeError: ("Nicht unterstützte Operandentypen für -: 'float' und 'NoneType'", 'aufgetreten bei Index 1')
Wissen Sie, wie Sie dieses Problem lösen können? Danke im Voraus