Pandas で列を datetime に変換する方法
多くの場合、pandas DataFrame の 1 つ以上の列を DateTime 形式に変換することに興味があるかもしれません。幸いなことに、これはto_datetime()関数を使用して簡単に行うことができます。
このチュートリアルでは、次の DataFrame でこの関数を使用する例をいくつか示します。
import numpy as np import pandas as pd #createDataFrame df = pd.DataFrame({'event': ['A', 'B', 'C'], 'start_date': ['20150601', '20160201', '20170401'], 'end_date': ['20150608', '20160209', '20170416'] }) #view DataFrame df event start_date end_date 0 A 20150601 20150608 1 B 20160201 20160209 2 C 20170401 201704161 #view column data types df. dtypes event object start_date object end_date object dtype:object
例 1: 単一列を DateTime に変換する
次のコードは、「start_date」列を文字列から DateTime 形式に変換する方法を示しています。
#convert start_date to DateTime format df['start_date'] = pd. to_datetime (df['start_date']) #view DataFrame df event start_date end_date 0 A 2015-06-01 20150608 1 B 2016-02-01 20160209 2 C 2017-04-01 20170416 #view column date types df. dtypes event object start_date datetime64[ns] end_date object dtype:object
to_datetime() 関数はインテリジェントであり、通常は使用する正しい日付形式を推測できますが、 format引数を使用して使用する形式を指定することもできます。
#convert start_date to DateTime format df['start_date'] = pd. to_datetime (df['start_date'], format=' %Y%m%d ') #view DataFrame df event start_date end_date 0 A 2015-06-01 20150608 1 B 2016-02-01 20160209 2 C 2017-04-01 20170416 #view column date types df. dtypes event object start_date datetime64[ns] end_date object dtype:object
例 2: 複数の列を DateTime に変換する
次のコードは、「start_date」列と「end_date」列を文字列から DateTime 形式に変換する方法を示しています。
#convert start_date and end_date to DateTime formats df[['start_date', 'end_date']] = df[['start_date', 'end_date']]. apply (pd. to_datetime ) #view DataFrame df event start_date end_date 0 A 2015-06-01 2015-06-08 1 B 2016-02-01 2016-02-09 2 C 2017-04-01 2017-04-16 #view column date types df. dtypes event object start_date datetime64[ns] end_date datetime64[ns] dtype:object
例 3: 列を秒を含む DateTime 形式に変換する
場合によっては、次の DataFrame のように、日付だけでなく、時間、分、秒を含む列も存在することがあります。
#createDataFrame df = pd.DataFrame({'event': ['A', 'B', 'C'], 'start_date': ['20150601043000', '20160201054500', '20170401021215'], 'end_date': ['20150608', '20160209', '20170416'] }) #view DataFrame df event start_date end_date 0 A 20150601043000 20150608 1 B 20160201054500 20160209 2 C 20170401021215 20170416
繰り返しますが、 to_datetime() 関数は賢明で、通常は指定しなくても使用する正しい形式を推測できます。
#convert start_date to DateTime format df['start_date'] = pd. to_datetime (df['start_date']) #view DataFrame df event start_date end_date 0 A 2015-06-01 04:30:00 20150608 1 B 2016-02-01 05:45:00 20160209 2 C 2017-04-01 02:12:15 20170416 #view column date types df. dtypes event object start_date datetime64[ns] end_date object dtype:object
もちろん、実際にはさまざまな奇妙な DateTime 形式に遭遇する可能性があるため、 format引数を使用して、どの DateTime 形式を使用するかを Python に正確に指示する必要がある場合があります。
このような場合、形式の指定に使用できる %DateTime 演算子の完全なリストについては、このページを参照してください。