„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie berechnet man eine Spalte in einem DataFrame anhand vorheriger Zeilenwerte mit „apply()“?

Wie berechnet man eine Spalte in einem DataFrame anhand vorheriger Zeilenwerte mit „apply()“?

Veröffentlicht am 13.11.2024
Durchsuche:633

How to Calculate a Column in a DataFrame Using Previous Row Values with `apply()`?

Iterieren durch DataFrames mit Überlegungen zu vorherigen Werten unter Verwendung von apply()

In Pandas wird die Funktion apply() häufig verwendet, um eine Funktion auf jede Zeile eines DataFrame anzuwenden . Es treten jedoch Herausforderungen auf, wenn der vorherige Zeilenwert auch mit derselben apply()-Methode berechnet wird.

Bedenken Sie den folgenden DataFrame:

Index_Date ABCD
2015-01-311010NaN10
2015-02-012 3NaN22
2015-02-021060NaN280
2015-02-0310100 NaN250

Das Ziel besteht darin, Spalte C abzuleiten:

  • Für 2015-01-31, Setzen Sie ihn auf den Wert von D.
  • Multiplizieren Sie für nachfolgende Zeilen den vorherigen Zeilenwert von C mit dem aktuellen Zeilenwert von A und addieren Sie ihn zum aktuellen Zeilenwert von B.

Lösung:

Um dies zu erreichen, legen wir zunächst den Anfangswert von C für den 31.01.2015 fest:

df.loc[0, 'C'] = df.loc[0, 'D']

Dann durchlaufen wir die verbleibenden Zeilen und aktualisieren die C-Werte mit den gewünschten Berechnungen:

for i in range(1, len(df)):
    df.loc[i, 'C'] = df.loc[i-1, 'C'] * df.loc[i, 'A']   df.loc[i, 'B']

Der letzte DataFrame nach diesen Vorgängen:

Index_DateABC D
2015-01-3110101010
2015-02-01232322
2015-02-021060290280
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3