Eu tenho um dataframe do pandas da seguinte maneira:
Symbol Date
A 02/20/2015
A 01/15/2016
A 08/21/2015
Quero classificar por Date
, mas a coluna é apenas um object
.
Tentei transformar a coluna em um objeto de data, mas me deparei com um problema em que esse formato não é o necessário. O formato necessário é 2015-02-20,
etc.
Então, agora estou tentando descobrir como fazer com que o numpy converta as datas 'americanas' no padrão ISO, para que eu possa torná-las objetos de data, para que possa classificá-las.
Como eu converteria essas datas americanas no padrão ISO, ou existe um método mais direto que estou perdendo no pandas?
df.Date.astype(np.int64)
deve funcionar para a épocapd.to_datetime(df.Date)[0]
retornaTimestamp('2015-02-20 00:00:00')
sort
método foi descontinuado e substituído porsort_values
. Depois de converter para o objeto datetime usandodf['Date']=pd.to_datetime(df['Date'])
df.sort_values(by=['Date'])
Observação: para classificar no local e / ou em ordem decrescente (o mais recente primeiro):
df.sort_values(by=['Date'], inplace=True, ascending=False)
fonte
A resposta do @JAB é rápida e concisa. Mas isso muda o que
DataFrame
você está tentando classificar, o que você pode ou não querer.( Observação : você quase certamente vai querer, porque suas colunas de datas devem ser datas, não strings!)
No caso improvável de você não querer mudar as datas para datas, você também pode fazer isso de uma maneira diferente.
Primeiro, obtenha o índice de sua
Date
coluna classificada :In [25]: pd.to_datetime(df.Date).order().index Out[25]: Int64Index([0, 2, 1], dtype='int64')
Em seguida, use-o para indexar seu original
DataFrame
, deixando-o 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 Pandas versões 0.20.0 e posteriores, use em
loc
vez deix
, que agora está obsoleto.fonte
Os dados contendo a coluna de data podem ser lidos usando o código a seguir:
Uma vez que os dados são lidos usando a linha de código acima, a coluna que contém as informações sobre a data pode ser acessada usando
pd.date_time()
como:pd.date_time(data[date_column], format = '%d/%m/%y')
para alterar o formato da data de acordo com o requisito.
fonte