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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage