Heim > Backend-Entwicklung > Python-Tutorial > Wie kann man Pandas' SettingWithCopyWarning verstehen und handhaben?

Wie kann man Pandas' SettingWithCopyWarning verstehen und handhaben?

Barbara Streisand
Freigeben: 2024-12-26 19:26:14
Original
154 Leute haben es durchsucht

How to Understand and Handle Pandas' SettingWithCopyWarning?

SettingWithCopyWarning: Erklärung und Handhabung in Pandas

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.

Verstehen der Warnung

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

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

Umgang mit der Warnung

1. Ignorieren der Warnung

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

2. Verwenden von loc und iloc

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

3. Erstellen einer Kopie

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

4. Den DataFrame neu generieren

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

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!

Quelle:php.cn
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