Python Pandas – TimedeltaをISO 8601形式にフォーマットする方法
PandasのTimedelta(時間差)オブジェクトをISO 8601形式にフォーマットするには、timedelta.isoformat()メソッドを使用します。この記事では、実際のコード例とともにその手順をわかりやすく解説します。
手順1:ライブラリのインポート
まず、必要なライブラリをインポートします。
import pandas as pd
手順2:Timedeltaオブジェクトの作成
次に、Timedeltaオブジェクトを作成します。
timedelta = pd.Timedelta('4 days 11 hours 38 min 20 s 35 ms 55 ns')
手順3:Timedeltaの表示
作成したTimedeltaオブジェクトを表示してみましょう。
print("Timedelta...\n", timedelta)
手順4:ISO 8601形式へのフォーマット
isoformat()メソッドを呼び出すことで、TimedeltaをISO 8601形式に変換できます。
timedelta.isoformat()
完全なコード例
以下は、ここまでの手順をまとめた完全なサンプルコードです。
import pandas as pd
# TimeDeltasはPythonの標準datetimeライブラリとは異なる表現を使用します
# Timedeltaオブジェクトを作成
timedelta = pd.Timedelta('4 days 11 hours 38 min 20 s 35 ms 55 ns')
# Timedeltaを表示
print("Timedelta...\n", timedelta)
# ISO 8601形式にフォーマット
res = timedelta.isoformat()
# ISO 8601形式に変換した結果を表示
print("\nFormat Timedelta as ISO 8601...\n", res)
実行結果
上記のコードを実行すると、次のような出力が得られます。
Timedelta... 4 days 11:38:20.035000055 Format Timedelta as ISO 8601... P4DT11H38M20.035000055S
出力結果の読み方
ISO 8601の期間(duration)表記では、各記号が以下の意味を持ちます。
- P:期間(Period)であることを示す接頭辞
- 4D:4日間
- T:日付部分と時刻部分の区切り
- 11H:11時間
- 38M:38分
- 20.035000055S:20.035000055秒
つまり「P4DT11H38M20.035000055S」は、「4日と11時間38分20.035000055秒」の期間をISO 8601規格に従って表現したものです。ナノ秒単位の精度まで正確に保持されるため、時刻データの厳密な交換や保存が必要な場面で非常に便利です。
-
Python Pandas – Timedeltaからnamedtuple形式のコンポーネントを取得する方法
PandasのTimedeltaオブジェクトから、namedtuple(名前付きタプル)形式で時間の構成要素を取得するには、timedelta.components属性を使用します。この属性を使うことで、日数・時間・分・秒・ミリ秒・マイクロ秒・ナノ秒といった各単位に分解された値を、属性アクセス可能な形で簡単に取り出せます。まずは、必要なライブラリをインポートしましょう。import pandas as pdTimedeltaオブジェクトの作成TimeDeltaは、Python標準のdatetimeライブラリが持つtimedeltaとは異なる独自の表現形式を採用しており、より高精度な時間差の計算
-
PythonでISO 8601形式の日付文字列を取得する方法【isoformat関数の使い方】
PythonでISO 8601形式の日付文字列を取得するISO 8601は、日付と時刻を国際的に標準化された形式で表現するための規格です(例:2024-01-31T15:30:00)。Python 3では、datetimeモジュールのisoformat()メソッドを使うことで、この形式の文字列を簡単に取得できます。たとえば、2017年12月31日の日付オブジェクトに対してisoformat()を呼び出すと、2017-12-31T00:00:00という文字列が返されます。コード例:isoformat()の基本的な使い方from datetime import datetime my_date