Python pandas entfernen SettingWithCopyWarning
Also machte ich eine leere dataframe mit
df=data[['ID','Matrix','Name','Country', 'Units']]
df['Value']=''
und ich bin ausfüllen mit code wie diesem, das findet strings mit den Werten 'Gut', 'Schlecht' df.Matrix
und füllt Sie mit Werten in sch[i]
:
df.loc[df.Matrix.str.contains('Good'),'Value'] = sch[2]
df.loc[df.Matrix.str.contains('Bad'),'Value'] = sch[6]
df.loc[df.Matrix.str.contains('Excellent'),'Value'] = sch[8]
Habe ich immer einen Haufen Fehler wie diese beiden zwei verschiedene Dinge:
C:\Python33\lib\site-packages\pandas\core\strings.py:184: UserWarning: This pattern has match groups. To actually get the groups, use str.extract.
" groups, use str.extract.", UserWarning)
C:\Users\0\Desktop\python\Sorter.py:57: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
df.loc[df.Matrix.str.contains('Bad'),'Value'] = sch[6]
Bisher bin ich unterdrücken Sie den code mit
pd.options.mode.chained_assignment = None
Wenn ich nicht unterdrücken der Fehlermeldungen bekomme ich etwa 20 von Ihnen. Gibt es ein anderes format kann ich die Daten ändern, damit ich nicht die Fehlermeldung bekommen?
Ich bin mit python 3 und pandas 0.131 wenn es hilft
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine gute Erklärung, warum diese Warnung wurde aktiviert:
Pandas: Verkettete Zuweisungen
Sind Sie sicher, dass alle Ihre code? Pls zeigen alle, was Sie tun.
2. Beispiel
df.Matrix
sostr.contains('Good')
prüft, ob einbool value
vor tagging es mit dem, was ist in sch[i] und der Teil, der check für den bool-Wert, der den Fehler verursacht hat. Dein code keinen Fehler, da Sie abgetretenen Orte und Eingänge Werte. Es ist nicht das gleiche, weil wenn ich Ihnen eine Datei mit gemischten Daten und sagen Ihnen, zu extrahieren, 'Gute' Ihr Programm nicht funktionieren würdedf['Value']=''
im Grunde nahm ich Zeilen aus einer csv-Datei und wollen, um Sie zu markieren, wenn eine bestimmte Bedingung vorhanden ist. Ich habe nie denSettingWithCopyWarning:
mit Python 2.7 und begann, um es in python 3. Ich bin nicht sehr glücklich mit dem Schalter.is_copy=False
. Der Punkt ist, praktisch alle pandas Operationen wieder eine Kopie, ändern in-place ist nicht eine gute Idee (mit der einen Ausnahme der Einstellung).df['Value'] = s
, anstatt es leer und überschreiben von Werten. Erstellen Sie einfach die Serie, wie Sie es brauchen; pandas richten es (das füllen der verbleibenden Werte mit nan)