Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man Pandas' SettingWithCopyWarning verstehen und handhaben?
Das SettingWithCopyWarning, eingeführt in Pandas 0.13.0rc1, warnt Benutzer vor potenziellen Problemen beim Festlegen von Werten auf Slices oder Kopien von DataFrames. Diese Warnung soll Verwirrung und unerwartetes Verhalten verhindern.
Die Warnung entsteht aufgrund von „verketteten Zuweisungen“, bei denen ein Wert auf einem Slice oder einer Kopie eines DataFrame festgelegt wird, z als:
df[df['A'] > 2]['B'] = new_val # new_val not set in df
In diesem Beispiel gibt die erste Auswahl (df[df['A'] > 2]) eine Kopie zurück und versucht, dies zu tun Wenn Sie „B“ für diese Kopie festlegen, wird der ursprüngliche DataFrame „df“ nicht aktualisiert. Um „df“ korrekt zu aktualisieren, verwenden Sie den Loc-Accessor:
df.loc[df['A'] > 2, 'B'] = new_val
Wenn Sie sicher sind, dass die Änderungen nicht auf den ursprünglichen DataFrame zurückgespiegelt werden müssen, können Sie die Warnung deaktivieren:
import pandas as pd pd.options.mode.chained_assignment = None # default='warn'
Für Zuweisungen auf Slices oder Kopien verwenden Sie die loc- oder iloc-Accessoren, die eine direkte Änderung des ursprünglichen DataFrame ermöglichen:
df.loc[df['A'] > 2, 'B'] = new_val df.iloc[2:5, 4] = [1, 8, 8]
Wenn Sie eine neue Referenz für Ihren DataFrame benötigen, erstellen Sie eine Kopie mit DataFrame.copy(), bevor Sie sie ändern:
new_df = df.copy() new_df['C'] = df['A'] + df['B']
In Ihrem speziellen Fall könnten Sie, anstatt das ursprüngliche quote_df zu ändern, einen neuen DataFrame mit den gewünschten Änderungen neu generieren:
quote_df = pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg')) quote_df.rename(columns={'A':'STK', 'B':'TOpen', ...}, inplace=True) quote_df['TVol'] = quote_df['TVol'] / TVOL_SCALE quote_df['TAmt'] = quote_df['TAmt'] / TAMT_SCALE quote_df['TDate'] = quote_df.TDate.map(lambda x: x[0:4]+x[5:7]+x[8:10])
Das obige ist der detaillierte Inhalt vonWie kann man Pandas' SettingWithCopyWarning verstehen und handhaben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!