Extrayendo solo Mes y Año por separado de la columna Pandas Datetime

Resuelto monkeybiz7 asked hace 10 años • 11 respuestas

Tengo un Dataframe, dfcon 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.Timestampde 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?

monkeybiz7 avatar Aug 06 '14 01:08 monkeybiz7
Aceptado

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.

KieranPC avatar Aug 05 '2014 22:08 KieranPC

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 DDía, 2M2 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 45Minde 45 minutos, 15Min15 minutos, etc.

pka32 avatar May 10 '2017 14:05 pka32