J'ai un dataframe pandas comme suit:
Symbol Date
A 02/20/2015
A 01/15/2016
A 08/21/2015
Je veux le trier par Date
, mais la colonne est juste un object
.
J'ai essayé de faire de la colonne un objet de date, mais j'ai rencontré un problème où ce format n'est pas le format nécessaire. Le format nécessaire est 2015-02-20,
etc.
Alors maintenant, j'essaie de comprendre comment convertir numpy les dates «américaines» en norme ISO, afin que je puisse en faire des objets de date, afin que je puisse trier par eux.
Comment convertir ces dates américaines en norme ISO, ou y a-t-il une méthode plus simple qui me manque dans les pandas?
df.Date.astype(np.int64)
devrait fonctionner pour l'époquepd.to_datetime(df.Date)[0]
revientTimestamp('2015-02-20 00:00:00')
sort
La méthode est obsolète et remplacée parsort_values
. Après la conversion en objet datetime à l'aide dedf['Date']=pd.to_datetime(df['Date'])
df.sort_values(by=['Date'])
Remarque: pour trier sur place et / ou dans un ordre décroissant (le plus récent en premier):
df.sort_values(by=['Date'], inplace=True, ascending=False)
la source
La réponse de @ JAB est rapide et concise. Mais cela change le que
DataFrame
vous essayez de trier, ce que vous voudrez peut-être ou non.( Remarque : vous le voudrez certainement , car vos colonnes de date doivent être des dates, pas des chaînes!)
Dans le cas peu probable où vous ne voudriez pas changer les dates en dates, vous pouvez également le faire d'une manière différente.
Tout d'abord, récupérez l'index de votre
Date
colonne triée :In [25]: pd.to_datetime(df.Date).order().index Out[25]: Int64Index([0, 2, 1], dtype='int64')
Ensuite, utilisez-le pour indexer votre original
DataFrame
, en le laissant intact: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
La magie!
Remarque: pour les versions 0.20.0 et supérieures de Pandas, utilisez
loc
plutôt queix
, qui est désormais obsolète.la source
Les données contenant la colonne de date peuvent être lues en utilisant le code ci-dessous:
Une fois les données lues en utilisant la ligne de code ci-dessus, la colonne contenant les informations sur la date peut être consultée en utilisant
pd.date_time()
comme:pd.date_time(data[date_column], format = '%d/%m/%y')
pour changer le format de la date selon l'exigence.
la source