Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python Pandas】timetzプロパティでタイムゾーン情報付きのdatetime.timeオブジェクトのNumPy配列を取得する方法

タイムゾーン情報を含むPythonのdatetime.timeオブジェクトからなるNumPy配列を返したい場合は、PandasのDatetimeIndex.timetzプロパティを使用します。

このプロパティを使うと、DatetimeIndex内の各Timestampから日付情報を除いた「時刻部分」だけを抽出し、タイムゾーン(tzinfo)の情報も保持したまま取得できます。

必要なライブラリのインポート

まず、必要なライブラリをインポートします。

import pandas as pd

DatetimeIndexの作成

次に、要素数5・頻度「ns」(ナノ秒)でDatetimeIndexを作成します。タイムゾーンはAustralia/Sydney(オーストラリア/シドニー)を指定します。

datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=5, tz='Australia/Sydney', freq='ns')

作成したDateTimeIndexを表示してみましょう。

print("DateTimeIndex...\n", datetimeindex)

続いて、timetzプロパティを使うと、タイムゾーン情報を含むTimestampの「時刻部分のみ」が返されます。

print("\nThe numpy array (time part with timezone)..\n", datetimeindex.timetz)

サンプルコード

以下に完全なコード例を示します。

import pandas as pd

# 要素数5・頻度ns(ナノ秒)でDatetimeIndexを作成
# タイムゾーンは Australia/Sydney を指定
datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=5, tz='Australia/Sydney', freq='ns')

# DateTimeIndexを表示
print("DateTimeIndex...\n", datetimeindex)

# タイムゾーン情報を含む時刻部分のみを返す
print("\nThe numpy array (time part with timezone)..\n", datetimeindex.timetz)

実行結果

上記のコードを実行すると、次のような出力が得られます。

DateTimeIndex...
DatetimeIndex([ '2021-10-20 02:30:50+11:00',
'2021-10-20 02:30:50.000000001+11:00',
'2021-10-20 02:30:50.000000002+11:00',
'2021-10-20 02:30:50.000000003+11:00',
'2021-10-20 02:30:50.000000004+11:00'],
dtype='datetime64[ns, Australia/Sydney]', freq='N')

The numpy array (time part with timezone)..
[datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>)
datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>)
datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>)
datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>)
datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>)]

ポイントまとめ

  • timetzプロパティは、各Timestampから日付を除いたdatetime.timeオブジェクトを要素とするNumPy配列を返します。
  • 元のDatetimeIndexにタイムゾーンが設定されている場合、tzinfo(ここではAEDT +11:00)もそのまま保持されます。
  • 日付情報が不要で時刻データだけを扱いたい場合に便利です。
  1. Python:NumPyのwhere()メソッドでPandas DataFrameをフィルタリングする方法

    NumPyのwhere()メソッドを使うと、Pandas DataFrameを簡単にフィルタリングできます。where()メソッドの引数に条件を指定すると、条件を満たす行のインデックスが返されるので、それを.loc[]に渡すことで該当するデータだけを抽出できます。 まずは、必要なライブラリをそれぞれのエイリアス(別名)でインポートしましょう。 import pandas as pd import numpy as np Pandas DataFrameの作成 次に、商品レコードを含むPandas DataFrameを作成します。ここでは「Product(商品名)」「Opening_Stock(

  2. 【Python】NumPyのブロードキャストとは?配列演算のルールと具体例をわかりやすく解説

    通常、配列同士の算術演算は、両者のサイズが完全に一致しているか、互換性のある特定のサイズである場合にのみ実行できます。しかしNumPyには、サイズの異なる配列同士でも演算を可能にする「ブロードキャスト(broadcasting)」という強力な仕組みが備わっています。 ブロードキャストでは、次元数(ndim)が小さい方の配列の形状の先頭に「1」を追加して拡張することで、演算対象となる配列同士の形状を揃えます。つまり、ブロードキャストとは、配列の形状を演算に必要な形状へ自動的に変換する機能のことです。 配列ブロードキャストのルール 他方の配列より次元数(ndim)が小さい配列は、その形状の先頭に