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

Python Pandas CustomBusinessHour – 指定したタイムスタンプがオフセット上にあるかどうかを確認する方法

指定したタイムスタンプがカスタム営業時間のオフセット上にあるかどうかを確認するには、Pandasの CustomBusinessHour.is_on_offset() メソッドを使用します。確認したいタイムスタンプを引数として渡すだけで、オフセット上にある場合は True、そうでない場合は False が返されます。

CustomBusinessHourとは

CustomBusinessHour は、Pandasの日付オフセットクラスである DateOffset のサブクラスです。標準的な営業時間(デフォルトは9:00〜17:00)ではなく、独自に定義した営業時間を扱いたい場合に便利です。start パラメータで開始時刻、end パラメータで終了時刻をそれぞれ24時間形式で指定します。

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

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

import pandas as pd

タイムスタンプオブジェクトの作成

Pandasでタイムスタンプオブジェクトを設定します。

timestamp = pd.Timestamp('2021-11-14 05:20:30')

CustomBusinessHourオフセットの作成

次に、CustomBusinessHourオフセットを作成します。ここでは、営業開始時刻を「09:30」、終了時刻を「18:30」に設定しています。

cbhOffset = pd.tseries.offsets.CustomBusinessHour(start="09:30", end = "18:30")

タイムスタンプへのオフセット適用

タイムスタンプにオフセットを加算し、更新されたタイムスタンプを表示します。

print("\nUpdated Timestamp...\n", timestamp + cbhOffset)

is_on_offset()でタイムスタンプを確認する

指定したタイムスタンプがオフセット上にあるかどうかを確認します。

offset = cbhOffset.is_on_offset(pd.Timestamp('2021-11-20 05:20:30'))

結果を表示します。

print("\nCheck if the given timestamp is on offset or not...\n", offset)

完全なコード例

以下に、これまでの手順をまとめた完全なコードを示します。

import pandas as pd

# Pandasでタイムスタンプオブジェクトを設定
timestamp = pd.Timestamp('2021-11-14 05:20:30')

# タイムスタンプを表示
print("Timestamp...\n", timestamp)

# CustomBusinessHourオフセットを作成
# CustomBusinessHourはDateOffsetのサブクラスです
# 「start」はカスタム営業時間の開始時刻(24時間形式)
# 「end」はカスタム営業時間の終了時刻(24時間形式)
cbhOffset = pd.tseries.offsets.CustomBusinessHour(start="09:30", end = "18:30")

# CustomBusinessHourオフセットを表示
print("\nCustomBusinessHour Offset...\n", cbhOffset)

# タイムスタンプにオフセットを加算し、更新されたタイムスタンプを表示
print("\nUpdated Timestamp...\n", timestamp + cbhOffset)

# 指定したタイムスタンプがオフセット上にあるかどうかを確認
offset = cbhOffset.is_on_offset(pd.Timestamp('2021-11-20 05:20:30'))

# 結果を表示
print("\nCheck if the given timestamp is on offset or not...\n", offset)

実行結果

このコードを実行すると、以下の出力が得られます。

Timestamp...
 2021-11-14 05:20:30

CustomBusinessHour Offset...
 <CustomBusinessHour: CBH=09:30-18:30>

Updated Timestamp...
 2021-11-15 10:30:00

Check if the given timestamp is on offset or not...
 False

結果の解説

出力を見ると、元のタイムスタンプ「2021-11-14 05:20:30」は日曜日であり、カスタム営業時間(09:30〜18:30)外の時刻です。そのため、オフセットを加算すると、翌営業日にあたる月曜日の「2021-11-15 10:30:00」へと移動します。また、is_on_offset() のチェック対象である「2021-11-20 05:20:30」も土曜日かつ営業時間外のため、結果は False となっています。このように、is_on_offset() を使えば、ある時点が定義済みの営業時間内に含まれるかどうかを簡単に判定できます。

  1. Pythonで与えられた数値がユークリッド数(Euclid Number)かどうかを判定する方法

    ユークリッド数とは? ある整数 n が与えられたとき、それがユークリッド数であるかどうかを判定することを考えます。ユークリッド数とは、次の式で表すことができる整数のことです。 n = Pn + 1 ここで Pn は「最初の n 個の素数の積」を意味します。 例として、入力が n = 211 の場合を考えてみましょう。211 は次のように表せるため、出力は True になります。 211 = (2 × 3 × 5 × 7) + 1 解決のためのアプローチ この問題は、以下の手順で解くことができます。 上限値 MAX を 10000 に設定し、空の素数リスト primes を用意します。 関数

  2. Pythonで指定した数値がオーレ数(調和約数)かどうかを判定する方法

    ある数 n が与えられたとき、それがオーレ数(Ore number)であるかどうかを判定する方法を解説します。オーレ数とは「約数の調和平均が整数になる数」のことで、「調和約数(harmonic divisor number)」とも呼ばれています。 オーレ数とは? たとえば入力が 28 の場合を考えてみましょう。28 の約数は次の 6 個あります。 [1, 2, 4, 7, 14, 28] これらの約数の調和平均は次のように計算できます。 調和平均 = 6 ÷ (1/1 + 1/2 + 1/4 + 1/7 + 1/14 + 1/28) = 6 ÷ 2 = 3 計算結果が整数の 3 になるため、