Beim Upgrade von Pandas von 0.11 auf 0.13.0rc1 können Benutzer auf zahlreiche SettingWithCopyWarning-Meldungen stoßen. Ein solches Beispiel ist:
E:\FinReporter\FM_EXT.py:449: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_index,col_indexer] = value instead quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Die SettingWithCopyWarning-Flags kennzeichnen potenziell verwirrende „verkettete“ Zuweisungen wie:
df[df['A'] > 2]['B'] = new_val # new_val not set in df
Dies funktioniert nicht immer so erwartet, insbesondere wenn die erste Auswahl eine Kopie zurückgibt. Um dieses Problem zu beheben, verwenden Sie Folgendes:
df.loc[df['A'] > 2, 'B'] = new_val
Im bereitgestellten Codeausschnitt:
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Sie führen effektiv Folgendes aus: verkettete Zuweisung äquivalent zu:
quote_df = quote_df[quote_df['A'] > 2] quote_df['TVol'] = new_val
Dieses Muster kann nicht vom Negativbeispiel unterschieden werden und löst das aus Warnung.
Wenn Sie sicher sind, dass sich die Schreibvorgänge nicht auf den Originalrahmen auswirken, deaktivieren Sie die Warnung mit:
import pandas as pd pd.options.mode.chained_assignment = None # default='warn'
Weiteres Verständnis finden Sie in diesen Ressourcen:
Das obige ist der detaillierte Inhalt vonWie kann ich mit SettingWithCopyWarning von Pandas effektiv umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!