datetimeオブジェクトを文字列に変換する
Pythonのdatetimeオブジェクトは、strやstrftimeメソッドを使うことで、任意の書式の文字列に変換することができる。
from datetime import datetime
ts = datetime(2019, 10, 4)
str(ts)
# '2019-10-04 00:00:00'
ts.strftime('%Y-%m-%d')
# '2019-10-04'
ts.strftime('%D')
# '10/04/19'
文字列をdatetimeオブジェクトに変換する
「%Y(4桁の年)」、「%m(2桁の月)」など、様々な書式が用意されているが、これらの書式はstrptimeメソッドを使って文字列をdate型に変換する際にも使用する。
val = '2019-10-04'
datetime.strptime(val, '%Y-%m-%d')
# datetime.datetime(2019, 10, 4, 0, 0)
vals = ['10/3/2019', '10/4/2019']
[datetime.strptime(x, '%m/%d/%Y') for x in vals]
# [datetime.datetime(2019, 10, 3, 0, 0),
# datetime.datetime(2019, 10, 4, 0, 0)]
strptimeメソッドは特定の書式で日付を変換するのに適したメソッドだ。
ただ、毎回書式を指定するのは面倒くさい。
そういった場合は、dateutilパッケージのparser.parseメソッドを使うことで、書式の指定を省略することができる。
from dateutil.parser import parse
parse('2019-10-04')
# datetime.datetime(2019, 10, 4, 0, 0)
pandasで日付の配列を扱う
pandasでは、データフレームのインデックスや列にある日付の配列を扱うことができる。
pandasのto_datetimeメソッドを使って、文字列のリストを、日付型のリストに変換する例を紹介しておく。
import pandas as pd
strs = ['2019-10-03 12:00:00', '2019-10-04 13:00:00']
date_strs = pd.to_datetime(strs)
# DatetimeIndex(['2019-10-03 12:00:00', '2019-10-04 13:00:00'], dtype='datetime64[ns]', freq=None)
date_strs[1]
# Timestamp('2019-10-04 13:00:00')