日付に変換したい(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:00Asia/Tokyoが使えます。

注釈

pendulum.now()tz-awaredatetime.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)に置き換えます。 事後処理するときに便利です。