python pandas Extrakt Jahr von datetime — diff['year'] = df['Datum'].Jahr nicht arbeiten
Sorry für diese Frage, die so repetitiv - ich erwarte die Antwort, fühle ich mich wie ein Dummkopf... aber ich habe kein Glück gehabt mit Antworten auf ähnliche Fragen auf, SO.
Ich bin das importieren von Daten in durch read_csv
, aber aus irgendeinem Grund kann ich nicht herausfinden, ich bin nicht in der Lage zu extrahieren, das Jahr oder der Monat aus dem dataframe-Serie df['date']
.
date Count
6/30/2010 525
7/30/2010 136
8/31/2010 125
9/30/2010 84
10/29/2010 4469
df = pd.read_csv('sample_data.csv',parse_dates=True)
df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].year
df['month'] = df['date'].month
Aber dies gibt:
AttributeError: '- Serie,' Objekt hat kein Attribut 'Jahr'
Vielen Dank im Voraus.
UPDATE:
df = pd.read_csv('sample_data.csv',parse_dates=True)
df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
dieser erzeugt die gleiche "AttributeError:' - Serie,' Objekt hat kein Attribut 'dt' "
FOLLOW-UP:
Bin ich mit dem Spyder 2.3.1 mit Python 3.4.1 64-bit, aber nicht aktualisieren pandas auf eine neuere Version (derzeit auf 0.14.1). Jede der folgende Code erzeugt eine ungültige syntax Fehler:
HTML:
conda update pandas
conda install pandas==0.15.2
conda install -f pandas
Irgendwelche Ideen?
- wo ist Jahr aus? Sind Sie versuchen, den Zugriff auf eine Reihe
(df["date"][0].year
? - Ich habe eine csv-Datei mit den Terminen und anderen Spalten, die kamen alle aus der SQL-Code als string-Daten. Versuchen, neue Jahres-und Monats-Spalten für die Gruppierung verwenden. die csv hat ~5000 Zeilen.
- Ja aber die
df["date"]
ist ein'pandas.core.series.Series'
Objekt. was solldf['date'].year
werden? - Wenn Sie mit version
0.15.0
oder höher, dann können Siedf['year'] = df['date'].dt.year
- Ich möchte einfach 2 weitere Spalten... eine für das Jahr und eine für Monat als Integer-zahlen.
- versuchte df['Datum'].dt.Jahr, EdChum.
- siehe mein update, es sollte funktionieren in Ihrer version von pandas, können Sie nach, welche version du verwendest
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie eine neue-ish-version von pandas dann können Sie die datetime-Attribut
dt
Zugriff auf die datetime-Komponenten:BEARBEITEN
Wie es aussieht bist du mit einer älteren version von pandas in diesem Fall die folgenden funktionieren würde:
Hinsichtlich, warum es nicht analysieren, diese in ein datetime in
read_csv
Sie brauchen, um passieren die ordinale position der Spalte ([0]
) weil wennTrue
es versucht zu analysieren Spalten[1,2,3]
siehe docsSo, wenn Sie passieren param
parse_dates=[0]
zuread_csv
es sollte keine Notwendigkeit zu nennento_datetime
auf der 'Datum' Spalte nach dem laden.parse_dates=[0]
fürread_csv
wird richtig analysiert, die Datums-String in ein datetime-Objekte, so dass Sie nicht brauchen, die extrato_datetime
nennenDies funktioniert:
Nun:
gibt diese Daten Rahmen:
Was für mich gearbeitet wurde die Aktualisierung pandas auf die neueste version:
Von der Kommandozeile aus tun:
Wann
dt
accessorEine gemeinsame Quelle der Verwirrung dreht sich um, wenn die Verwendung
.year
und Wann.dt.year
.Ersteres ist ein Attribut für
pd.DatetimeIndex
Objekte, die letztere fürpd.Series
Objekte. Betrachten Sie dieses dataframe:Die definition der Serie und der index ähnlich Aussehen, aber die
pd.DataFrame
Konstruktor konvertiert Sie in verschiedene Typen:Den
DatetimeIndex
Objekt hat eine direkteyear
Attribut, während dieSeries
- Objekt verwenden müssen, diedt
accessor. Ebenso fürmonth
:Ein feiner, aber wichtiger Unterschied erwähnenswert ist, dass
df.index.month
gibt ein NumPy-array, währenddf['Dates'].dt.month
gibt eine Pandabären-Serie. Wir verwendenpd.Serie.Werte
zum extrahieren der NumPy-array-Darstellung.