Extrayendo solo Mes y Año por separado de la columna Pandas Datetime
Tengo un Dataframe, df
con la siguiente columna:
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
Los elementos de la columna son pandas.tslib.Timestamp
de tipo. Quiero extraer el año y el mes.
Esto es lo que he probado:
df['ArrivalDate'].resample('M', how = 'mean')
que arroja el siguiente error:
Only valid with DatetimeIndex or PeriodIndex
Entonces probé:
df['ArrivalDate'].apply(lambda(x):x[:-2])
que arroja el siguiente error:
'Timestamp' object has no attribute '__getitem__'
Mi solución actual es
df.index = df['ArrivalDate']
Luego, puedo volver a muestrear otra columna usando el índice.
Pero todavía me gustaría un método para reconfigurar toda la columna. ¿Algunas ideas?
Si desea nuevas columnas que muestren el año y el mes por separado, puede hacer esto:
df['year'] = pd.DatetimeIndex(df['ArrivalDate']).year
df['month'] = pd.DatetimeIndex(df['ArrivalDate']).month
o...
df['year'] = df['ArrivalDate'].dt.year
df['month'] = df['ArrivalDate'].dt.month
Luego podrás combinarlos o trabajar con ellos tal como están.
Tiene df['date_column']
que estar en formato de fecha y hora.
df['month_year'] = df['date_column'].dt.to_period('M')
También puede usar D
Día, 2M
2 meses, etc. para diferentes intervalos de muestreo, y en caso de que uno tenga datos de series de tiempo con marca de tiempo, podemos optar por intervalos de muestreo granulares, como muestreo 45Min
de 45 minutos, 15Min
15 minutos, etc.