python - datetimeindex - Tiempo de caída desde datetime<[M8] en Pandas
pandas timestamp string to datetime (2)
La forma más rápida es usar la normalización de DatetimeIndex (primero debe hacer que la columna sea un Indice de Datetime):
In [11]: df = pd.DataFrame({"t": pd.date_range(''2014-01-01'', periods=5, freq=''H'')})
In [12]: df
Out[12]:
t
0 2014-01-01 00:00:00
1 2014-01-01 01:00:00
2 2014-01-01 02:00:00
3 2014-01-01 03:00:00
4 2014-01-01 04:00:00
In [13]: pd.DatetimeIndex(df.t).normalize()
Out[13]:
<class ''pandas.tseries.index.DatetimeIndex''>
[2014-01-01, ..., 2014-01-01]
Length: 5, Freq: None, Timezone: None
In [14]: df[''date''] = pd.DatetimeIndex(df.t).normalize()
In [15]: df
Out[15]:
t date
0 2014-01-01 00:00:00 2014-01-01
1 2014-01-01 01:00:00 2014-01-01
2 2014-01-01 02:00:00 2014-01-01
3 2014-01-01 03:00:00 2014-01-01
4 2014-01-01 04:00:00 2014-01-01
DatetimeIndex también tiene algunos otros atributos útiles, por ejemplo, .year, .month, .day.
A partir de la versión 0.15 serán un atributo dt, por lo que puede acceder a este (y otros métodos) con:
df.t.dt.normalize()
# equivalent to
pd.DatetimeIndex(df.t).normalize()
Así que tengo una columna ''Fecha'' en mi marco de datos donde las fechas tienen un formato como este
0 1998-08-26 04:00:00
Si solo quiero el mes y el año del año, ¿cómo puedo abandonar la hora trivial?
Otra posibilidad es usar str.split
df[''Date''] = df[''Date''].str.split('' '',expand=True)[0]
Esto debería dividir la columna ''Fecha'' en dos columnas marcadas con 0 y 1. Usando el espacio en blanco entre la fecha y la hora como indicador de división.
La columna 0 del marco de datos devuelto incluye la fecha y la columna 1 incluye la hora. Luego establece la columna ''Fecha'' de su marco de datos original en la columna [0], que debería ser solo la fecha.