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

Python Pandas CustomBusinessHour – 提供された日付をさかのぼってロールバックする方法

Pandasで提供された日付をさかのぼって(後方へ)ロールバックするには、CustomBusinessHour.rollback()メソッドを使用します。この記事では、実際のコード例を通じて、CustomBusinessHourオフセットの作成からrollback()メソッドによる日付のロールバックまでの手順をわかりやすく解説します。

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

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

import pandas as pd

タイムスタンプの設定

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

timestamp = pd.Timestamp('2021-12-20 08:35:10')

CustomBusinessHourオフセットの作成

次に、CustomBusinessHourオフセットを作成します。CustomBusinessHourはDateOffsetクラスのサブクラスです。ここでは、営業日を「月・火・水・金」に限定したweekmaskを指定しています。

cbhOffset = pd.tseries.offsets.CustomBusinessHour(n = 5, weekmask = 'Mon Tue Wed Fri')

パラメータの意味は以下の通りです。

  • n = 5: オフセットの数(5営業時間分)
  • weekmask: 有効な営業日の指定(木曜と土日が除外されます)

オフセットを加算して更新されたタイムスタンプを表示

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

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

rollback()メソッドで日付をさかのぼる

対象の日付がオフセット上にない場合、rollback()メソッドを使って直前の有効な営業時間にさかのぼります。ここでは2021年12月18日(土曜日)を指定しています。土曜日はweekmaskに含まれていないため、直近の営業時間である12月17日(金曜日)17:00にロールバックされます。

roll_back = cbhOffset.rollback(pd.Timestamp('2021-12-18 08:35:10'))

結果を表示します。

print("\nRoll Backward Result...\n",roll_back)

完全なコード例

以下に全体のコードを示します。

import pandas as pd

# Pandasでタイムスタンプオブジェクトを設定
timestamp = pd.Timestamp('2021-12-20 08:35:10')

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

# CustomBusinessHourオフセットを作成
# CustomBusinessHourはDateOffsetのサブクラス
# weekmaskで有効な営業日を指定
cbhOffset = pd.tseries.offsets.CustomBusinessHour(n = 5, weekmask = 'Mon Tue Wed Fri')

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

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

# オフセット上にない場合はさかのぼってロールバック
roll_back = cbhOffset.rollback(pd.Timestamp('2021-12-18 08:35:10'))

# 結果を表示
print("\nRoll Backward Result...\n",roll_back)

実行結果

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

Timestamp...
 2021-12-20 08:35:10

CustomBusinessHour Offset...
 <5 * CustomBusinessHours: CBH=09:00-17:00>

Updated Timestamp...
 2021-12-20 14:00:00

Roll Backward Result...
 2021-12-17 17:00:00

まとめ

このように、PandasのCustomBusinessHour.rollback()メソッドを使うことで、営業日や営業時間外の日付を直前の有効な営業時間へ自動的にさかのぼることができます。weekmaskを活用すれば、企業独自の営業カレンダーに合わせた柔軟な日時計算が可能になります。営業日ベースの時系列データ処理において非常に便利な機能なので、ぜひ活用してみてください。

  1. Pythonで日付文字列をタイムスタンプに変換する方法【mktime活用】

    Pythonで日付を表す文字列をタイムスタンプ(UNIX時間)に変換したい場合、「time」パッケージに含まれるmktimeメソッドを使用するのが一般的です。この記事では、具体的なコード例と実行結果をもとに、その手順をわかりやすく解説します。 サンプルコード import time import datetime my_string = 24/03/2021 print(The date string is :) print(my_string) print(The timestamp is :) print(time.mktime(datetime.datetime.strptime(my

  2. PandasのオフセットをPythonの日付に変換する方法

    日付オブジェクトからPandasのオフセットを減算すると、結果は pandas Timestamp オブジェクトになります。このオブジェクトは、文字列形式の日付や、標準的なPythonの日付オブジェクト(datetime.date)に変換できます。また、datetime ライブラリの timedelta オブジェクトを使う方法もあります。Timestampオブジェクトが生成される例まず、日付からオフセットを引いたときにどのような型になるか確認してみましょう。from pandas.tseries.frequencies import to_offset import pandas as pd