2017-02-25 7 views
2

Also, ich habe Zeitstempel, die wie folgt aussehen:Wie sortiert man nach Zeitmarken in Pandas?

20140804:10:00:13.281486 

20140804:10:00:13.400113 

20140804:10:00:13.555512 

20140804:10:00:13.435677 

Ich habe sie in einem Datenrahmen und ich versuche, sie in aufsteigender Reihenfolge zu sortieren. Ich habe folgendes versucht. Aber es scheint nicht zu funktionieren

df['yyyymmdd'] = pd.to_numeric(df['yyyymmdd'], errors='coerce') 

df['hh'] = pd.to_numeric(df['hh'], errors='coerce') 

df['mm'] = pd.to_numeric(df['mm'], errors='coerce') 

df['ss'] = pd.to_numeric(df['ss'], errors='coerce') 

df=df.sort(['yyyymmdd', 'hh','mm','ss'], ascending=[True, True,True,True]) 

Jede Hilfe wird geschätzt.

Antwort

3

Sie müssen nur sicherstellen, dass Sie die Formatspezifikation richtig bezeichnen, und Sie pd.to_datetime verwenden können, um sie zu tatsächlichen Datetimes vor sort_values zu konvertieren.

pd.to_datetime(stamps, format="%Y%m%d:%H:%M:%S.%f").sort_values() 

Das ist viel direkter als die Zeitstempel in Komponenten zu zersetzen und ein Multiple-Kriterien durchführen Art, wie Sie versuchen.

Demo

>>> stamps 
0 20140804:10:00:13.281486 
1 20140804:10:00:13.400113 
2 20140804:10:00:13.555512 
3 20140804:10:00:13.435677 
dtype: object 

>>> pd.to_datetime(stamps, format="%Y%m%d:%H:%M:%S.%f").sort_values() 
0 2014-08-04 10:00:13.281486 
1 2014-08-04 10:00:13.400113 
3 2014-08-04 10:00:13.435677 
2 2014-08-04 10:00:13.555512 
dtype: datetime64[ns] 
Verwandte Themen