Ich versuche, alle Datumswerte in einer Tabelle Datum Spalte ändern, wo das Jahr vor 1900 ist, bis zum heutigen Datum Ich habe eine Scheibe.Pandas: SettingWithCopyWarning, versuchen zu verstehen, wie der Code besser geschrieben wird, nicht nur, ob die Warnung ignoriert werden soll
EDIT: vorherige Codezeilen:
df=pd.read_excel(filename)#,usecols=['NAME','DATE','EMAIL']
#regex to remove weird characters
df['DATE'] = df['DATE'].str.replace(r'[^a-zA-Z0-9\._/-]', '')
df['DATE'] = pd.to_datetime(df['DATE'])
sample row in dataframe: name, date, email
[u'Public, Jane Q.\xa0' u'01/01/2016\xa0' u'[email protected]\xa0']
Diese Codezeile funktioniert.
df["DATE"][df["DATE"].dt.year < 1900] = dt.datetime.today()
Dann werden alle Datumswerte formatiert:
df["DATE"] = df["DATE"].map(lambda x: x.strftime("%m/%d/%y"))
Aber ich erhalte eine Fehlermeldung:
SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-
versus-Kopie
ich die Dokumentation und andere Beiträge gelesen , wobei .loc empfohlen wird
Das Folgende ist die empfohlene Lösung:
df.loc[row_indexer,col_indexer] = value
aber df["DATE"].loc[df["DATE"].dt.year < 1900] = dt.datetime.today()
gibt mir den gleichen Fehler, mit der Ausnahme, dass die Zeilennummer ist eigentlich die Zeilennummer nach der letzten Zeile im Skript.
Ich verstehe einfach nicht, was die Dokumentation versucht, mir zu sagen, wie es sich auf mein Beispiel bezieht.
Ich fing an, herumzualbern mit dem Herausziehen der Scheibe und der Zuordnung zu einem separaten Datenrahmen, aber dann werde ich sie wieder zusammenbringen müssen.
Dies sollten Sie eine gute Vorstellung davon, was los ist http://stackoverflow.com/a/38147527/2336654 – piRSquared
seinen 'df.loc [df [ "DATE"]. Dt.year <1900, "DATA"] = dt.datetime.today() ' – cel
Aber dieser Code setzt den Datumswert in jede Spalte im Datenrahmen für diese Zeile. Deshalb habe ich es in 'df [" DATE "] [df [" DATE "] geändert ...' – mattrweaver