web-dev-qa-db-ja.com

パンダのタイムスタンプで並べ替える方法は?

したがって、次のようなタイムスタンプがあります。

20140804:10:00:13.281486

20140804:10:00:13.400113

20140804:10:00:13.555512

20140804:10:00:13.435677

私はそれらをDataFrameに入れ、昇順で並べ替えようとしています。以下を試しました。しかし、それはうまくいかないようです

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])

どんな助けでもありがたいです。

7
J Doe

あなたはあなたがフォーマット仕様を正しく示すことを確実にする必要があるだけであり、そしてあなたは pd.to_datetime をそれらをactual以前の日時に変換 sort_values

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

これは、コンポーネントのタイムスタンプを分解して、複数基準のソートを実行するよりもはるかに直接的です。

デモ

>>> 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]
8
miradulo