Pythonで文字列のデータセットの日付はdatetime型、経過時間はtimedelta型に変換する
経過時間を扱うのにdataframeでto_datetimeにデータ型を変換していたので反省のメモ。
データ型について
データ型については以下のドキュメントで確認できます。 docs.python.org
よく使うのは以下の2つ
- datetime.datetime → 日時
- 例:2019/7/16 20:00:00
- datetime.timedelta → 経過時間
- 例: 00:00:10
pandasの場合、to_datetime(),to_timedelta()を利用
pandasで日付はto_datetime()を利用
サンプル
import pandas as pd datetime_list = ['2019/7/16 20:00:00','2019/7/16 21:00:00'] datetime_df = pd.DataFrame(datetime_list) datetime_df = pd.to_datetime(datetime_df[0])
datetime_dfの中身
0 2019-07-16 20:00:00 1 2019-07-16 21:00:00 Name: 0, dtype: datetime64[ns]
pandasで経過時間はto_timedelta()を利用
サンプル
import pandas as pd timedelta_list = ['00:00:10','00:00:20'] timedelta_df = pd.DataFrame(timedelta_list) timedelta_df = pd.to_timedelta(timedelta_df[0])
timedelta_dfの中身
0 00:00:10 1 00:00:20 Name: 0, dtype: timedelta64[ns]
pandasじゃない場合は日付はstrptime()を利用、経過時間は文字列から時間抽出してdatetime.timedelta()を利用
日付はstrptime()を利用
サンプル
import datetime datetime_str = '2019/7/16 20:00:00' datetime_dt = datetime.datetime.strptime(datetime_str, '%Y/%m/%d %H:%M:%S')
datetime_dtの中身
print(type(datetime_dt),datetime_dt) <class 'datetime.datetime'> 2019-07-16 20:00:00
経過時間は文字列から時間抽出してdatetime.timedelta()を利用
サンプル
import datetime timedelta_str = '00:00:10' hours, minutes, seconds = map(int, timedelta_str.split(":")) timedelta_td = datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds)
timedelta_tdの中身
print(type(timedelta_td),timedelta_td) <class 'datetime.timedelta'> 0:00:10
まとめ
- pandasではto_timedeltaで簡単にできる
- 時間の型変換についてはぐぐるとto_datetime()ばっかりが上位に来た。大本のドキュメント読むの大事。