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 演算子の完全なリストについては、このページを参照してください

追加リソース

Pandas で DateTime を日付に変換する方法
Pandas で文字列を float に変換する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です