Python: now()とtoday()の謎
ふと、「pd.Timestamp.today() と pd.Timestamp.now()って出力結果は同じだけど違いはなんだっけ?」と疑問に思ったので、改めて調べてみました。以下はVisual Studio Codeで実行したコードです。
import pandas as pd
print(pd.Timestamp.now())
print(pd.Timestamp.today())
出力結果
タイムゾーンを指定して比較してみる
調べていると、タイムゾーンを指定できるか否かの違いがある、という記事を見つけました。さっそく確認してみます。
import pandas as pd
print(pd.Timestamp.now(tz='Asia/Tokyo'))
print(pd.Timestamp.today(tz='Asia/Tokyo'))
出力結果
結果は同じ……どうやら、どちらもタイムゾーン指定ができるようです。ではnow() と today() が両方存在している意味とは?
なかなか解明できず…
ChatGPTを使って得た情報をまとめてみる
pd.Timestamp.now()
「現在の日時(年月日+時刻)」を取得する関数
もともと詳細な日時データ(年月日+時刻)を取得するために作られた
オプションでタイムゾーン (tz) を指定できる
pd.Timestamp.today()
「現在の日付(年月日)」を取得するために主に作られた
Pandas 1.5.0 より前のバージョンではタイムゾーン指定 (tz) ができなかった
バージョン1.5.0以降、tz オプションが追加され、today() でもタイムゾーンを指定できるようになった
使い分けと互換性について
過去のバージョン(pandas バージョン 1.5.0 より前)では pd.Timestamp.today() にタイムゾーンを指定する引数がなかったため、日時と時刻の両方を含むタイムゾーン付きデータが必要な場合には pd.Timestamp.now() の使用が推奨されていました。しかし、pd.Timestamp.today() でもタイムゾーンが指定できるようになり、現在では互換性を保つためにどちらも存在しています。
一般的には、日付のみを取得したい場合は today()、時刻情報を含むタイムスタンプが必要な場合は now() を使うのが良いそうです。
ひとまずモヤモヤは解消できました。時間周りのテーマが続いておりますが、しばらく集中的に理解を深めることにします!