Heim  >  Artikel  >  Backend-Entwicklung  >  Wie berechnet man sequentielle Zeilenwerte in einem Pandas-DataFrame mithilfe von „Anwenden“ und „Verschieben“?

Wie berechnet man sequentielle Zeilenwerte in einem Pandas-DataFrame mithilfe von „Anwenden“ und „Verschieben“?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-28 16:43:02575Durchsuche

How to Calculate Sequential Row Values in a Pandas DataFrame Using Apply and Shifting?

Pandas beantragen sequentielle Zeilenwertberechnungen in Datenrahmen

Bei der Arbeit mit Pandas-Datenrahmen kann es vorkommen, dass Sie den Wert verwenden müssen einer vorherigen Zeile in einer Berechnung. Dies kann jedoch zu Herausforderungen führen, insbesondere wenn der vorherige Wert auch innerhalb derselben Apply-Funktion berechnet wird.

Beachten Sie den folgenden Datenrahmen:

Index_Date    A   B     C    D
================================
2015-01-31    10   10   Nan   10
2015-02-01     2    3   Nan   22 
2015-02-02    10   60   Nan  280
2015-02-03    10  100   Nan  250

Wir möchten eine neue Spalte C erstellen , wobei:

  • Für den 31.01.2015 ist C gleich D.
  • Für alle anderen Zeilen wird C als C der vorherigen Zeile multipliziert mit A der aktuellen Zeile berechnet , plus das B der aktuellen Zeile.

Die Verwendung einer Apply-Funktion und einer Verschiebung mit einer if-else-Bedingung funktioniert aufgrund von Schlüsselfehlern möglicherweise nicht. Stattdessen können wir diesen Schritten folgen:

Schritt 1: Abgeleiteten Wert initialisieren

Zuerst setzen wir den C-Wert für die erste Zeile auf D:

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

Schritt 2: Iterieren und berechnen

Als nächstes iterieren wir durch die verbleibenden Zeilen und berechnen C mithilfe des C-Werts der vorherigen Zeile:

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

Ergebnis:

  Index_Date   A   B    C    D
0 2015-01-31  10  10   10   10
1 2015-02-01   2   3   23   22
2 2015-02-02  10  60  290  280
3 2015-02-03  10  100  3000  250

Das obige ist der detaillierte Inhalt vonWie berechnet man sequentielle Zeilenwerte in einem Pandas-DataFrame mithilfe von „Anwenden“ und „Verschieben“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn