Hintergrund:
Pandas-Versionen 0.13 und höher werden eingeführt die SettingWithCopyWarning, um potenzielle Verwirrung hervorzuheben, die durch „verkettete“ Zuweisungen verursacht wird. Diese Warnung zielt auf Szenarien ab, in denen eine Kopie eines DataFrames geändert wird, was zu unerwarteten Ergebnissen führt.
Was bedeutet die Warnung?
Die Warnung weist darauf hin, dass ein Wert vorliegt wird auf eine Kopie eines Slice aus einem DataFrame gesetzt. Insbesondere wird vorgeschlagen, die folgende Zeile zu ersetzen:
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
durch:
quote_df.loc[row_index, 'TVol'] = value
So beheben Sie die Warnung:
Die bereitgestellte Lösung Die Warnung besteht darin, stattdessen die Loc-Indizierung zu verwenden. Dies ist jedoch möglicherweise nicht für alle Anwendungsfälle geeignet. Wenn Ihnen die Aktualisierung des ursprünglichen DataFrame nicht wichtig ist, können Sie die Warnung sicher deaktivieren mit:
import pandas as pd pd.options.mode.chained_assignment = None # default='warn'
Andere Erklärung:
Das SettingWithCopyWarning kennzeichnet verkettete Zuweisungen, die dies tun funktionieren nicht immer wie erwartet. Das Problem tritt auf, wenn die erste Auswahl eine Kopie des DataFrame zurückgibt und nachfolgende Zuweisungen an dieser Kopie vorgenommen werden. Dieses Muster kann zu Verwirrung führen, da die Änderungen nicht im ursprünglichen DataFrame widergespiegelt werden.
In Ihrem Fall verursacht der folgende Code die Warnung:
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Da quote_df['TVol' ] eine Kopie ist, ändert die Zuweisung den ursprünglichen DataFrame nicht. Erwägen Sie stattdessen die Verwendung von:
quote_df = quote_df[quote_df['TVol'] > 0] quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Zusätzliche Ressourcen:
Das obige ist der detaillierte Inhalt vonWie kann man Pandas' SettingWithCopyWarning verstehen und beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!