データ分析で数字やロット番号が入ったdataframeの表を扱う場面、よくあると思います。
これらの数字データを日付(datetime型)に変更する方法は、Googleで検索すればすぐ出てきます。
ただし、いろんなやり方が紹介されていて、読むのに何気に時間が奪われます。読むのも疲れます。
そこで、「これだけ覚えとこう!」というものをここに書きます。
以下、令和時代の最初の日である2019年5月1日を例にとって説明します。
とりあえず、pd.to_datetime(df[‘○○’], format=’△△’)だけ覚えとけばいい
小題のとおり、Pandasのpd.to_datetime(df[‘○○’], format=’△△’)だけ覚えとけば良OKです。
たいていはこのpd.to_datetimeで事足りると思います。これ以外のマニアックな方法は、Googleでつど検索すればよいと思います。
190501という文字列を日付に変更する
import pandas as pd
df = pd.read.csv('□□.csv')
df['年月日'] = pd.to_datetime(df['ロット番号'], format='%y%m%d')
これにより、年月日という名前のdatetime型のカラムができます。
そして、df[‘ロット番号’]=190501の行の df[‘年月日’]は、2019-05-01となります。
formatのところはロット番号の表し方を記号化したものを入れます。
%yは年の下2ケタを表し、%mは月を表す2ケタ、%dは日を表す2ケタです。したがって、%y%m%dで6ケタのロット番号を表せます。
余談ですが・・・
余談ですが、%Yとすると、年を4ケタのフル表示することになります。ですので、こんな書き方もできます。
df['ロット番号'] = df['ロット番号'],+200000
df['年月日'] = pd.to_datetime(df['ロット番号'], format='%Y%m%d')
元々のロット番号に200000を足して8ケタ表示にし、formatに大文字の%Yを入れるということです。
例えば、ロット番号が「190501」なら、「20190501」に書き直してから%Y%m%dでdatetimeに変換するということです。
19/05/01という文字列を日付に変更する
formatのところを%y/%m/%dにするだけです。
df['年月日'] = pd.to_datetime(df['ロット番号'], format='%y%m%d')
2019/05/01という文字列を日付に変更する
formatのところを%Y/%m/%dにするだけです。年のところは大文字%Yです。
df['年月日'] = pd.to_datetime(df['ロット番号'], format='%Y%m%d')
2019-05-01という文字列を日付に変更する
formatのところを%Y-%m-%dにするだけです。
df['年月日'] = pd.to_datetime(df['ロット番号'], format='%Y%m%d')
まとめ
というわけで、pd.to_datetimeのカッコ内に変換したいカラムとformatを入れれば簡単にdatetime型の日付カラムが作れます。
formatのところをうまく書けば、さまざまなロット番号や文字列を変換できます。