datetimeオブジェクトを文字列に変換する
Pythonのdatetimeオブジェクトは、strやstrftimeメソッドを使うことで、任意の書式の文字列に変換することができる。
01 02 03 04 05 06 07 08 09 10 11 12 | 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型に変換する際にも使用する。
1 2 3 4 5 6 7 8 9 | 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メソッドを使うことで、書式の指定を省略することができる。
1 2 3 4 | from dateutil.parser import parse parse( '2019-10-04' ) # datetime.datetime(2019, 10, 4, 0, 0) |
pandasで日付の配列を扱う
pandasでは、データフレームのインデックスや列にある日付の配列を扱うことができる。
pandasのto_datetimeメソッドを使って、文字列のリストを、日付型のリストに変換する例を紹介しておく。
1 2 3 4 5 6 7 8 9 | 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') |