Pandas.to_datetimeで形式を指定する方法
pandas.to_datetime()関数を使用して、pandas DataFrame の文字列列を datetime 列に変換できます。
この関数を使用する場合、 format引数を使用して日付の形式を指定し、文字列から日時への変換時のエラーを回避できます。
この関数は次の基本構文を使用します。
df[' datetime '] = pd. to_datetime (df[' my_date_column '], format=' %m%d%Y %H:%M:%S '])
format引数に指定できる最も一般的なディレクティブを次に示します。
- %m : ゼロを含む数値としての月 (01、02、… 12)
- %d : ゼロを含む数値としての日付 (01、02、… 31)
- %y : 世紀を数字にした年 (2020、2021、2022 など)
- %H : ゼロで埋められた数値としての時間 (24 時間制) (00、01、… 23)
- %I : ゼロが埋め込まれた数値としての時刻 (12 時間制) (01、02、… 12)
- %p : 午前または午後のいずれか
- %M : ゼロで補完された数値形式の分 (00、01、… 59)
- %S : ゼロで補完された数値形式の秒 (00、01、… 59)
ガイドラインの完全なリストについては、 このページを参照してください。
次の例は、さまざまなシナリオでto_datetime()関数のformat引数を使用する方法を示しています。
例: pandas.to_datetime に形式を指定する
小売店でのさまざまな日付の総売上高に関する情報を含む次のパンダ データフレームがあるとします。
import pandas as pd #createDataFrame df = pd. DataFrame ({' date ': ['10012023 4:15:30', '10042023 7:16:04', '10062023 9:25:00', '10142023 15:30:50', '10152023 18:15:00'], ' sales ': [100, 140, 235, 120, 250]}) #view DataFrame print (df) dirty dates 0 10012023 4:15:30 100 1 10042023 7:16:04 140 2 10062023 9:25:00 235 3 10142023 15:30:50 120 4 10152023 18:15:00 250 #view data type of each column in DataFrame print ( df.dtypes ) date object dirty int64 dtype:object
日付列が現在文字列 (つまりオブジェクト) 列であることがわかります。
pandas.to_datetime()を使用してこの列を datetime に変換しようとするとします。
#attempt to convert date column to datetime format
df[' date '] = pd. to_datetime (df[' date '])
ParserError: month must be in 1..12: 10012023 4:15:30 present at position 0
pandas.to_datetime()関数が日付列の現在の日付と時刻の形式を認識しないため、エラーが発生します。
format引数を使用して列の形式を指定することもできます。
#convert date column to datetime format
df[' date '] = pd. to_datetime (df[' date '], format=' %m%d%Y %H:%M:%S ')
#view DataFrame
print (df)
dirty dates
0 2023-10-01 04:15:30 100
1 2023-10-04 07:16:04 140
2 2023-10-06 09:25:00 235
3 2023-10-14 15:30:50 120
4 2023-10-15 18:15:00 250
#view updated type of each column
print ( df.dtypes )
date datetime64[ns]
dirty int64
dtype:object
日付列が日時列に正常に変換され、 format引数を使用して日付列の正確な形式を指定したため、エラーは発生しなかったことがわかります。
注: pandas to_datetime()関数の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。
Pandas で日付範囲を作成する方法
Pandasでタイムスタンプを日付/時刻に変換する方法
パンダで 2 つの日付の差を計算する方法