Python Pandas – ceil()メソッドでTimedeltaを1時間単位の解像度に切り上げる方法
はじめに
Pandasでは、指定した解像度に切り上げた新しいTimedeltaオブジェクトを取得するために、timedelta.ceil()メソッドを使用します。1時間単位で切り上げたい場合は、freqパラメータに「H」を指定するだけでOKです。
この記事では、実際のコード例とともに、Timedeltaを1時間単位に切り上げる手順をわかりやすく解説します。
必要なライブラリのインポート
まず、Pandasをインポートします。
import pandas as pd
Timedeltaオブジェクトの作成
TimeDeltasは、Python標準のdatetimeライブラリが使用するtimedeltaとは異なる表現形式を持っています。ここでは、pd.Timedelta()コンストラクタを使ってTimedeltaオブジェクトを作成します。
timedelta = pd.Timedelta('6 days 11 hours 1 min 30 s')
作成したTimedeltaを表示して確認しましょう。
print("Timedelta...\n", timedelta)
1時間単位の解像度で切り上げる
ceil()メソッドにfreq='H'を渡すことで、1時間単位の解像度で切り上げられた新しいTimedeltaを取得できます。分や秒の情報は切り捨てられ、直近の「満了する時刻」へ繰り上がります。
res = timedelta.ceil(freq='H')
完全なコード例
以下に、ここまでの手順をまとめたサンプルコードを示します。
import pandas as pd
# TimeDeltasは、Python標準のdatetimeライブラリのtimedeltaとは異なる表現形式を持つ
# Timedeltaオブジェクトを作成
timedelta = pd.Timedelta('6 days 11 hours 1 min 30 s')
# Timedeltaを表示
print("Timedelta...\n", timedelta)
# 1時間単位の解像度で切り上げた結果を取得
res = timedelta.ceil(freq='H')
# 切り上げ後のTimedeltaを表示
print("\nTimedelta (hourly ceiled)...\n", res)
実行結果
上記のコードを実行すると、次のような出力が得られます。
Timedelta... 6 days 11:01:30 Timedelta (hourly ceiled)... 6 days 12:00:00
結果のポイント
元のTimedeltaは「6日11時間1分30秒」でしたが、ceil(freq='H')によって1時間単位に切り上げられ、「6日12時間00分00秒」となりました。このように、ceil()メソッドを使えば、秒や分を含む細かい時間を指定した解像度へ簡単に丸めることができます。
なお、逆に切り下げたい場合はfloor()メソッド、四捨五入したい場合はround()メソッドを使用します。用途に応じて使い分けると便利です。
-
Python Pandas – 指定した解像度に切り上げた新しいTimedeltaを返す方法
指定した解像度(頻度)に切り上げた新しい Timedelta を返すには、timedelta.ceil() メソッドを使用します。切り上げの単位は、freq パラメータで指定します。まず、必要なライブラリをインポートします。import pandas as pdTimeDeltas は、Python の標準 datetime ライブラリで使用される timedelta とは異なる表現形式を持っています。ここでは、pd.Timedelta を使って Timedelta オブジェクトを作成します。timedelta = pd.Timedelta(6 days 1 min 30 s)作成した Tim
-
Python Pandas – Timedeltaからnamedtuple形式のコンポーネントを取得する方法
PandasのTimedeltaオブジェクトから、namedtuple(名前付きタプル)形式で時間の構成要素を取得するには、timedelta.components属性を使用します。この属性を使うことで、日数・時間・分・秒・ミリ秒・マイクロ秒・ナノ秒といった各単位に分解された値を、属性アクセス可能な形で簡単に取り出せます。まずは、必要なライブラリをインポートしましょう。import pandas as pdTimedeltaオブジェクトの作成TimeDeltaは、Python標準のdatetimeライブラリが持つtimedeltaとは異なる独自の表現形式を採用しており、より高精度な時間差の計算