前回の記事の予告通り、
pandasのto_datetime関数の紹介です。
非常に多くのデータ型や、フォーマットに対応していて柔軟に時刻データに変化してくれます。
ドキュメント中に書かれている引数:argの通り、Seriesでも一個の文字列でも大丈夫です。
Parameters:
arg : integer, float, string, datetime, list, tuple, 1-d array, Series
New in version 0.18.1: or DataFrame/dict-like
実際に使ってみましょう。
import pandas as pd
pd.to_datetime("2019/05/17 07:25:34")
# Timestamp('2019-05-17 07:25:34')
pd.to_datetime("2019-05-17 07:25:34.372245")
# Timestamp('2019-05-17 07:25:34.372245')
pd.to_datetime("2019 May 17 07:25:34.372245")
# Timestamp('2019-05-17 07:25:34.372245')
pd.to_datetime("17-05-19 07:25:34")
# Timestamp('2019-05-17 07:25:34')
上の例ではフォーマットを変えながら文字列を渡しましたが、いい感じに解釈してくれているのがわかります。
%Y-%m-%dとか指定しなくていいのでとても楽です。
これがあるので、自分はstrptimeはほぼ使っていません。
文字列を一つ渡せば、Timestampが戻り、Seriesを渡せばSeriesが帰ってきますが、
listを渡した時はlistではなく、DatetimeIndexが返されるのは注意です。
あとは、Timestamp型と、datetime型の違いがきになるところですが、
ほぼ互換性があると書いてあるので恐らく大丈夫でしょう。
(細かな違いもそのうち調べようとは思っていますが。)
参考: pandas.Timestamp
Timestamp is the pandas equivalent of python’s Datetime and is interchangeable with it in most cases. It’s the type used for the entries that make up a DatetimeIndex, and other timeseries oriented data structures in pandas.