ゆるオタクの生活改善メモ帳

仕事メモとライフハック。あらゆるものを効率化してダラダラする時間を増やしたい。

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()ばっかりが上位に来た。大本のドキュメント読むの大事。