Ich habe einen Datenrahmen, df, mit der folgenden Spalte:
df['ArrivalDate'] =
...
936 2012-12-31
938 2012-12-29
965 2012-12-31
966 2012-12-31
967 2012-12-31
968 2012-12-31
969 2012-12-31
970 2012-12-29
971 2012-12-31
972 2012-12-29
973 2012-12-29
...
Die Elemente der Spalte sind pandas.tslib.Timestamp.
Ich möchte nur das Jahr und den Monat angeben. Ich dachte, es gäbe einen einfachen Weg, aber ich kann es nicht herausfinden.
Folgendes habe ich versucht:
df['ArrivalDate'].resample('M', how = 'mean')
Ich habe folgenden Fehler erhalten:
Only valid with DatetimeIndex or PeriodIndex
Dann habe ich versucht:
df['ArrivalDate'].apply(lambda(x):x[:-2])
Ich habe folgenden Fehler erhalten:
'Timestamp' object has no attribute '__getitem__'
Irgendwelche Vorschläge?
Edit: Ich habe es irgendwie herausgefunden.
df.index = df['ArrivalDate']
Dann kann ich mithilfe des Index eine weitere Spalte neu abtasten.
Aber ich möchte immer noch eine Methode zum Neukonfigurieren der gesamten Spalte. Irgendwelche Ideen?
to_period
: df.date_column.dt.month
(oder .year
, oder .day
) arbeitet
.dt.month
verliert das Jahr. Und .dt.to_period('M')
ändert den Datentyp in etwas, das kein datetime64 mehr ist. Ich landete mit bis Juan Antwort darauf hindeutet , .astype('datetime64[M]')
um die Werte zu kürzen.