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:
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!