はじめに
今回は日付型への変換を扱います。日付を表すColumnsであっても、文字列型のまま扱うこともあります。ただ日付型に変換しておいた方が、あとの処理が楽になることもたくさんあります。処理の仕方にはパターンがあるので、是非押さえておきましょう。
パターン
日付型への変換のパターンは、大体次の3パターンに分けることができます。一つずつみていきましょう。
文字列型(yyyymmdd)→日付型
1つめは、日付を表すColumnsが文字列型として認識されているパターンです。この場合は、pandasのto_datetime()を利用することで簡単に日付型に変換することができます。
サンプルデータを使ってみていきましょう。
# サンプルデータ
df_sample=pd.DataFrame({'名前':['らくだ','ぱんだ','うさぎ','ぞう','きりん'],
'来場日':['20200623','20200622','20200625','20200621','20200623']})
df_sample
文字列型として認識されている「来場日」を日付型に変更して新しい列「来場日(日付型)」にいれてみましょう。
df_sample['来場日(日付型)']=pd.to_datetime(df_sample['来場日'])
df_sample.info()
info()で型を確認すると、「来場日」はobject(文字列型)、「来場日(日付型)」は、datetime64(日付型)になっています。
数値型(yyyymmdd)→日付型
2つ目は、日付を表すColumnsが数値として認識されているパターンです。実はこの場合は、一旦、文字列型に変換します。すると、あとは1つめのパターンと同様に処理をすることができます。
サンプルデータを次のように書き換えておきます。
# サンプルデータ
df_sample=pd.DataFrame({'名前':['らくだ','ぱんだ','うさぎ','ぞう','きりん'],
'来場日':['20200623','20200622','20200625','20200621','20200623']})
df_sample
今回も「来場日(日付型)」を作ることにします。もともとが数値型の場合は次のようにします。
df_sample['来場日(日付型)']=pd.to_datetime(df_sample['来場日'].astype('str'))
df_sample.info()
数値型(UNIX時間)→日付型
最後に日付がUNIX秒で表されている場合です。こちらは、あまり馴染みがない場合もあるかもしれませんね。あまり出会うことがなければ、今後困ったときに、こういう処理もあったなぁ、と検索すればよいかと思います。一応、紹介だけしておきます。
# サンプルデータ
df_sample=pd.DataFrame({'名前':['らくだ','ぱんだ','うさぎ','ぞう','きりん'],
'来場日':[1257207400,1287206400,1237206400,1257202400,1157206400]})
df_sample
今度は来場日がUNIX時間(エポック秒)で与えられています。この場合は次のように処理をします。
df_sample['来場日(日付型)']=pd.to_datetime(df_sample['来場日'],unit='s')
df_sample
データ型を確認しておくと、次のようになります。
df_sample.info()
まとめ
いかがでしたか?今回は日付型への変換を3パターンに分けて扱ってみました。参考になったでしょうか?このパターンを知っておけば、日付型の変換に困ることはないでしょう。
▶ 日付型に変換したら、日時の操作も学びましょう。こちらの記事をどうぞ。
▶ タイムゾーンを考慮した操作をする場合は次の投稿をご覧ください。
コメント