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

Mary-Kate Olsen
Freigeben: 2024-10-24 06:15:30
Original
478 Leute haben es durchsucht

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>
Nach dem Login kopieren

Verwenden Sie:

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

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!