Tengo un marco de datos de pandas de la siguiente manera:
Symbol Date
A 02/20/2015
A 01/15/2016
A 08/21/2015
Quiero ordenarlo Date
, pero la columna es solo un object
.
Intenté convertir la columna en un objeto de fecha, pero encontré un problema en el que ese formato no es el formato necesario. El formato necesario es 2015-02-20,
etc.
Así que ahora estoy tratando de averiguar cómo hacer que numpy convierta las fechas 'americanas' en el estándar ISO, para poder hacer que sean objetos de fecha, para poder ordenar por ellos.
¿Cómo convertiría estas fechas americanas en el estándar ISO, o hay un método más sencillo que me falta dentro de los pandas?
df.Date.astype(np.int64)
debería funcionar para tiempo de épocapd.to_datetime(df.Date)[0]
regresaTimestamp('2015-02-20 00:00:00')
sort
El método ha sido obsoleto y reemplazado porsort_values
. Después de convertir al objeto de fecha y hora usandodf['Date']=pd.to_datetime(df['Date'])
df.sort_values(by=['Date'])
Nota: para ordenar en el lugar y / o en orden descendente (el más reciente primero):
df.sort_values(by=['Date'], inplace=True, ascending=False)
fuente
La respuesta de @ JAB es rápida y concisa. Pero cambia lo
DataFrame
que está intentando ordenar, lo que puede que desee o no.( Nota : es casi seguro que lo querrá, porque las columnas de fecha deben ser fechas, no cadenas).
En el improbable caso de que no desee cambiar las fechas por fechas, también puede hacerlo de otra manera.
Primero, obtenga el índice de su
Date
columna ordenada :In [25]: pd.to_datetime(df.Date).order().index Out[25]: Int64Index([0, 2, 1], dtype='int64')
Luego úselo para indexar su original
DataFrame
, dejándolo intacto:In [26]: df.ix[pd.to_datetime(df.Date).order().index] Out[26]: Date Symbol 0 2015-02-20 A 2 2015-08-21 A 1 2016-01-15 A
¡Magia!
Nota: para las versiones 0.20.0 de Pandas y posteriores, use en
loc
lugar deix
, que ahora está obsoleto.fuente
Los datos que contienen la columna de fecha se pueden leer utilizando el siguiente código:
Una vez que se leen los datos usando la línea de código anterior, se puede acceder a la columna que contiene la información sobre la fecha usando
pd.date_time()
como:pd.date_time(data[date_column], format = '%d/%m/%y')
para cambiar el formato de la fecha según el requisito.
fuente