日付に変換したい(pandas.to_datetime)
1pd.to_datetime("2022/08/24", format="%Y/%m/%d")
pandas.to_datetimeを使って、日付の文字列をTimestamp型などのオブジェクトに変換できます。
変換する文字列のフォーマットをformatで指定できます。
だいたいの文字列を変換できます。
タイムゾーンを追加したい(tz_localize)
1data["datetime"] = pd.to_datetime(data["datetime"], format="ISO8601")
2timezone = "UTC+09:00"
3if data["datetime"].dt.tz is None:
4 data["datetime"] = data["datetime"].dt.tz_localize(timezone)
データを記録したときの時刻の文字列がdatetimeというカラムに入った状態を想定しています。
時刻のタイムゾーン情報を持っているかをdt.tzで確認できます。
タイムゾーン情報も持っている場合(tz-aware)はそのまま、
タイムゾーン情報を持っていない場合(tz-naive)は、dt.tz_localize(タイムゾーン)でタイムゾーン情報を追加しています。
日本のタイムゾーン情報を追加する場合はUTC+09:00やAsia/Tokyoが使えます。
注釈
pendulum.now()はtz-aware、datetime.datetime.now()はtz-naiveな日付オブジェクトを生成します。
tz-awareなデータとtz-naiveなデータを持つデータフレームをそのまま結合(pd.concat)したらエラーがでました。
上記のように、どちらのデータもtz-awareな日付オブジェクトに変換して対処しました。
UNIX時間に変換したい
1pd.to_datetime(data["datetime"], format="ISO8601", unit="s", origin="unix")
UNIXのエポック時間(=1970-01-01)からの経過時間に変換できます。
エラーをスキップしたい
1data["datetime"] = pd.to_datetime(data["datetime"], format="%Y/%m/%d", errors="coerce")
日付に変換ができない文字列があった場合、デフォルトではエラーが表示されます(errors="raise")。
errors="coerce"オプションを使うと、変換できなかった値をNaT(Not a Time)に置き換えます。
事後処理するときに便利です。