Python pandas入門:タイムゾーン情報を除いてDateTimeIndexをSeriesに変換する方法
pandasでDateTimeIndex(日時インデックス)をSeriesに変換する際、タイムゾーン情報を除外したいケースがあります。その場合は、datetimeindex.tz_convert(None).to_series()を使用します。tz_convert(None)によってタイムゾーン情報を取り除き、その結果をSeriesへ変換できます。
基本的な手順
まず、必要なライブラリをインポートします。
import pandas as pd
次に、期間5・頻度「S」(秒)のDatetimeIndexを作成します。ここではタイムゾーンとして「Australia/Adelaide」を指定し、40秒間隔で生成しています。
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='40S')
作成したDateTimeIndexを表示して確認しましょう。
print("DateTimeIndex...\n", datetimeindex)
そして、tz_convert()に「None」を設定することでタイムゾーンを除外した状態で、DateTimeIndexをSeriesに変換します。
print("\nDateTimeIndex to series excluding the TimeZone...\n",
datetimeindex.tz_convert(None).to_series())
サンプルコード全体
以下が完全なコード例です。
import pandas as pd
# 期間5、頻度はS(秒)のDatetimeIndexを作成
# タイムゾーンは Australia/Adelaide を指定
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='40S')
# DateTimeIndexを表示
print("DateTimeIndex...\n", datetimeindex)
# DateTimeIndexの頻度を表示
print("DateTimeIndex frequency...\n", datetimeindex.freq)
# DateTimeIndexをSeriesに変換
# tz_convert()にNoneを設定してタイムゾーンを除外
print("\nDateTimeIndex to series excluding the TimeZone...\n",
datetimeindex.tz_convert(None).to_series())
実行結果
上記のコードを実行すると、次のような出力が得られます。
DateTimeIndex... DatetimeIndex(['2021-10-18 07:20:32.261811624+10:30', '2021-10-18 07:21:12.261811624+10:30', '2021-10-18 07:21:52.261811624+10:30', '2021-10-18 07:22:32.261811624+10:30', '2021-10-18 07:23:12.261811624+10:30'], dtype='datetime64[ns, Australia/Adelaide]', freq='40S') DateTimeIndex frequency... <40 * Seconds> DateTimeIndex to series excluding the TimeZone... 2021-10-17 20:50:32.261811624 2021-10-17 20:50:32.261811624 2021-10-17 20:51:12.261811624 2021-10-17 20:51:12.261811624 2021-10-17 20:51:52.261811624 2021-10-17 20:51:52.261811624 2021-10-17 20:52:32.261811624 2021-10-17 20:52:32.261811624 2021-10-17 20:53:12.261811624 2021-10-17 20:53:12.261811624 Freq: 40S, dtype: datetime64[ns]
ポイント解説
出力結果から分かるように、元のDateTimeIndexには「+10:30」というオフセット付きのタイムゾーン情報(dtype: datetime64[ns, Australia/Adelaide])が含まれています。一方、tz_convert(None)を適用してSeriesに変換すると、dtypeが単純な「datetime64[ns]」になり、タイムゾーン情報が除去されていることが確認できます。
なお、tz_convert(None)はUTCへの変換を行うため、表示される時刻自体もUTC基準の時刻に変換される点に注意してください。単純にタイムゾーン情報だけを剥がしたい場合は、tz_localize(None)を使うという選択肢もあります。用途に応じて使い分けるとよいでしょう。
-
Python Pandas - タイムスタンプを別のタイムゾーンに変換する方法
Python Pandasでタイムスタンプのタイムゾーンを変換する方法 Pandasでタイムスタンプを別のタイムゾーンに変換するには、timestamp.tz_convert()メソッドを使用します。引数に変換先のタイムゾーンを指定するだけで、簡単に変換できます。 必要なライブラリのインポート まず、必要なライブラリをインポートします。 import pandas as pd タイムスタンプオブジェクトの作成 次に、Pandasでタイムスタンプオブジェクトを作成します。ここでは、tz引数を使ってタイムゾーン(US/Eastern)も同時に設定しています。 timestamp = pd.Ti
-
Python・Pandasシリーズの最後の要素にアクセスする方法
Pandasシリーズの最後の要素にアクセスするには、iat属性を使用するのが便利です。iatは、行と列の位置を整数(インデックス番号)で指定して単一の値を高速に取得するための属性であり、負のインデックス「-1」を指定すれば、末尾の要素に直接アクセスできます。必要なライブラリのインポートまず、Pandasライブラリをインポートします。import pandas as pdサンプルデータの作成数値を含むPandasシリーズを作成します。data = pd.Series([10, 20, 5, 65, 75, 85, 30, 100])iatで最後の要素を取得するiatに「-1」を渡すことで、シリー