Python Pandas入門:POSIXタイムスタンプからナイーブなUTC日時を作成する方法
POSIXタイムスタンプ(UNIXエポックからの経過秒数)から、タイムゾーン情報を持たない「ナイーブ(naive)」なUTC日時オブジェクトを作成したい場合があります。Pandasでは、Timestamp.utcfromtimestamp()メソッドを使うことで簡単に実現できます。このメソッドの引数にはPOSIXタイムスタンプを渡します。
必要なライブラリのインポート
まず、必要なライブラリをインポートします。
import pandas as pd
Timestampオブジェクトの作成
次に、日時文字列からTimestampオブジェクトを作成します。
timestamp = pd.Timestamp('2021-09-14T15:12:34.261811624')POSIXタイムスタンプからUTC日時への変換
utcfromtimestamp()メソッドを呼び出し、引数としてPOSIXタイムスタンプを渡すことで、ナイーブなUTC日時が生成されます。ここでは例として「1631717502」というタイムスタンプを使用します。
timestamp.utcfromtimestamp(1631717502)
サンプルコード
以下に完全なコード例を示します。
import pandas as pd
# Timestampオブジェクトを作成
timestamp = pd.Timestamp('2021-09-14T15:12:34.261811624')
# Timestampを表示
print("Timestamp...\n", timestamp)
# POSIXタイムスタンプからナイーブなUTC日時を作成
# 引数にPOSIXタイムスタンプを渡す
print("\nConstruct UTC Datetime...\n", timestamp.utcfromtimestamp(1631717502))実行結果
上記のコードを実行すると、次のような出力が得られます。
Timestamp... 2021-09-14 15:12:34.261811624 Construct UTC Datetime... 2021-09-15 14:51:42
ポイント解説
「ナイーブな日時」とは、タイムゾーン情報(tzinfo)を持たないdatetimeオブジェクトのことです。utcfromtimestamp()は、指定されたPOSIXタイムスタンプを協定世界時(UTC)として解釈し、タイムゾーン情報なしの日時オブジェクトを返します。そのため、タイムスタンプ「1631717502」は「2021-09-15 14:51:42」というUTC基準の日時に変換されています。タイムゾーンを意識した処理が必要な場合は、tz_localize()やtz_convert()などのメソッドと組み合わせて使用するとよいでしょう。
-
Python・Pandasで日時列から日付と時刻を分離するプログラムの作り方
データ分析では、DataFrame内の日時(datetime)列を「日付」と「時刻」に分けて扱いたい場面がよくあります。たとえば、日ごとの集計を行いたい場合や、時間帯だけを取り出して分析したい場合などが挙げられます。この記事では、datetime 列を date 列と time 列に分割する方法を、2つのアプローチで解説します。目標とする出力イメージ datetime date time 0 2020-01-01 07:10:00 2020-01-01 07:10:00 1 2020-01-02 07:10:00 2020-01-02 07
-
Pythonで日時をUTCタイムスタンプに変換する方法を徹底解説
Pythonでは、datetimeモジュールを使うことで、日時(datetime)をUTCタイムスタンプへ簡単に変換できます。すでにdatetimeオブジェクトがUTCとして作成されている場合は、timestamp()メソッドを呼び出すだけでUTCタイムスタンプを取得できます。このメソッドは、エポック(1970年1月1日00:00:00 UTC)からの経過秒数を返します。 一方、datetimeオブジェクトがローカルタイムゾーンで作成されている場合は、まずreplace()メソッドでタイムゾーン情報をUTCに置き換えてから、タイムスタンプを取得する必要があります。 例:timezone.utc