Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann die falsche Verwendung verketteter Zuweisungen zu unerwarteten Ergebnissen in Pandas führen?

Wie kann die falsche Verwendung verketteter Zuweisungen zu unerwarteten Ergebnissen in Pandas führen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-24 06:15:30463Durchsuche

How Can Incorrect Use of Chained Assignments Lead to Unexpected Results in Pandas?

Verkettete Zuweisungen in Pandas

Bei der Arbeit mit Datenrahmen in Pandas können verkettete Zuweisungen zu unerwartetem Verhalten oder Fehlalarmen führen, wie durch die angezeigt SettingWithCopyWarning. Diese Warnung soll Benutzer auf mögliche Fallstricke bei verketteten Zuweisungen aufmerksam machen.

So funktioniert verkettete Zuweisungen

In Pandas geben die meisten Methodenaufrufe eine Kopie des Objekts zurück. Das bedeutet, dass Sie, wenn Sie eine verkettete Zuweisung wie df['column'] = df['column'].fillna(...) durchführen, möglicherweise eine Kopie des ursprünglichen Datenrahmens und nicht den ursprünglichen Datenrahmen selbst ändern.

Auswirkungen der Verkettung mit .ix(), .iloc() und .loc()

Die Wahl von ix(), iloc() und loc () kann sich auf das Verhalten verketteter Zuweisungen auswirken:

  • ix() ist veraltet und sollte nicht verwendet werden.
  • iloc() ruft Daten mithilfe ganzzahliger Indizes ab. Diese Methode kann nur direkt auf Elemente zugreifen und unterstützt keine verkettete Zuweisung.
  • loc() ruft Daten mithilfe von Labels ab. Verkettete Zuweisungen mit loc() erstellen ein neues Objekt, das möglicherweise den ursprünglichen Datenrahmen ändert oder nicht.

Optimale Codierungspraktiken

Um potenzielle Probleme mit zu vermeiden Bei verketteten Zuweisungen wird empfohlen, das Ergebnis Ihrer Operationen explizit einer neuen Variablen zuzuweisen. Zum Beispiel anstelle von:

<code class="python">df['amount'] = df['amount'].fillna(...)</code>

Verwenden Sie:

<code class="python">df['amount_updated'] = df['amount'].fillna(...)</code>

False Positives

Einige verkettete Zuweisungen können Warnungen auslösen, selbst wenn dies der Fall ist Der ursprüngliche Datenrahmen wird nicht geändert. In solchen Fällen können Sie die Warnungen deaktivieren, indem Sie Folgendes verwenden:

<code class="python">pd.set_option('chained_assignment', None)</code>

Beispiel

Bedenken Sie den folgenden Code:

<code class="python">data['amount'] = data.apply(lambda row: function1(row, date, qty), axis=1) 
data['amount'] = data['amount'].astype(float)</code>

Dieser Code kann eine SettingWithCopyWarning auslösen, da data['amount'] zweimal zugewiesen wird. Um dies zu beheben, weisen Sie das Ergebnis der ersten Operation einer neuen Variablen zu:

<code class="python">temp_amount = data.apply(lambda row: function1(row, date, qty), axis=1) 
data['amount'] = temp_amount.astype(float)</code>

Das obige ist der detaillierte Inhalt vonWie kann die falsche Verwendung verketteter Zuweisungen zu unerwarteten Ergebnissen in Pandas führen?. 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