Pandas で DataFrame 列を Datetime に変換する
-
pd.to_datetime()
を使用して DataFrame 列をDatetime
に変換する -
pd.astype()
を使用して DataFrame 列をDatetime
に変換する -
lambda
を使用して DataFrame 列をDatetime
に変換する -
apply()
を使用して、複数の DataFrame 列をDatetime
に変換する
Python で pandas
ライブラリを使用してデータを処理しているときに、時系列データに遭遇することがあります。 ここで、文字列またはオブジェクト型の列を datetime
形式に変換する必要がある場合があります。
今日のチュートリアルでは、pd.to_datetime()
、astype()
、lambda
、および apply()
メソッドを使用して、文字列またはオブジェクト型の列を datetime
形式に変換する方法を示します。
pd.to_datetime()
を使用して DataFrame 列を Datetime
に変換する
コード例:
import pandas as pd
df = pd.DataFrame({"Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"]})
df["converted_to_datetime"] = pd.to_datetime(df["Date"])
print(df.info())
出力:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date 4 non-null object
1 converted_to_datetime 4 non-null datetime64[ns]
dtypes: datetime64[ns](1), object(1)
memory usage: 192.0+ bytes
None
この出力は、それぞれ object
および datetime64[ns]
型の Date
および converted_to_datetime
という 2つの列があることを示しています。 object
型を datetime
にどのように変換したのでしょうか?
以下で調べてみましょう。
最初に、pandas
という名前の Python ライブラリをインポートし、エイリアスを pd
に設定してキーストロークを回避しました。 次に、日付を DD/MM/YYYY
形式で保持する Date
という名前の列を 1つ含むデータフレームを作成しました。
ここでは、フォーマットを変更する必要はありませんが、Date
列のデータ型を object
から datetime
に変換する必要があります。 そのために、to_datetime()
メソッドを使用し、シリーズをそれに渡し、データフレーム列を object
から datetime
に変換します。
to_datetime()
メソッドは、関数の引数として配列、シリーズ、データフレーム、スカラー、または辞書のようなものを取り、指定された引数を Pandas datetime
オブジェクトに変換できます。 ここでは、info()
でデータフレームを簡潔にまとめました。
特定の形式の日付が必要だとします。 どうすればそれができますか? 同じ例を練習して、日付形式を変更してみましょう。
format
属性で to_datetime()
を使用して日付形式を変更する
コード例:
import pandas as pd
df = pd.DataFrame({"Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"]})
df["converted_to_datetime"] = pd.to_datetime(df["Date"], format="%m/%d/%Y")
print(df.info())
出力:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date 4 non-null object
1 converted_to_datetime 4 non-null datetime64[ns]
dtypes: datetime64[ns](1), object(1)
memory usage: 192.0+ bytes
None
このコード スニペットは最後の例と似ており、同じ出力を生成しますが、日付形式の指定に使用される format
属性を使用して MM/DD/YYYY
形式の日付を取得しています。 必要に応じて、時間を %H:%M:%S
として指定することもできます。
infer_datetime_format
属性で to_datetime()
を使用する
コード例:
import pandas as pd
df = pd.DataFrame({"Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"]})
df["converted_to_datetime"] = pd.to_datetime(df["Date"], infer_datetime_format=True)
print(df.info())
出力:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date 4 non-null object
1 converted_to_datetime 4 non-null datetime64[ns]
dtypes: datetime64[ns](1), object(1)
memory usage: 192.0+ bytes
None
前のサンプル コードでは、format
属性を使用し、to_datetime()
メソッドを使用して日付形式を指定する必要がありましたが、infer_datetime_format
を True
に設定すると、日付形式を自動的に検出し、指定された形式に変換するのに役立ちます。 データフレーム列を datetime
に変更します。
pd.astype()
を使用して DataFrame 列を Datetime
に変換する
コード例:
import pandas as pd
df = pd.DataFrame({"Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"]})
df["converted_to_datetime"] = df["Date"].astype("datetime64[ns]")
print(df.info())
出力:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date 4 non-null object
1 converted_to_datetime 4 non-null datetime64[ns]
dtypes: datetime64[ns](1), object(1)
memory usage: 192.0+ bytes
None
このコード フェンスは、series.astype()
メソッドを使用して、データフレーム列を datetime
に変換します。 この関数を使用して、文字列列を Pandas データフレームの datetime
型に変換できます。
データ型を変換するには、データ型を引数として指定する必要があります。 私たちの場合は 'datetime64[ns]'
です。
lambda
を使用して DataFrame 列を Datetime
に変換する
コード例:
import pandas as pd
from datetime import datetime
df = pd.DataFrame({"Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"]})
df["converted_to_datetime"] = df["Date"].apply(
lambda x: datetime.strptime(x, "%m/%d/%Y")
)
print(df.info())
出力:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date 4 non-null object
1 converted_to_datetime 4 non-null datetime64[ns]
dtypes: datetime64[ns](1), object(1)
memory usage: 192.0+ bytes
None
このコード スニペットでは、DataFrame.apply()
メソッドと lambda
関数を使用して値を操作しました。 ここでは、datetime.strptime()
メソッドを使用して、指定された日付形式を考慮してデータフレーム列を datetime
に変換しました。
lambda
式を使用する理由 シンプルさと読みやすさのために、関数の代わりに使用されます。
使用する前に datetime
をインポートすることを忘れないでください。
次に、datetime
に変換したい inserted
列と updated
列があるとします。 以下でそれを学びましょう。
apply()
を使用して、複数の DataFrame 列を Datetime
に変換する
コード例:
import pandas as pd
from datetime import datetime
df = pd.DataFrame(
{
"Insert_Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"],
"Update_Date": ["13/08/2019", "10/01/2020", "15/6/2021", "20/12/2022"],
}
)
df[["Insert_DateTime", "Update_DateTime"]] = df[["Insert_Date", "Update_Date"]].apply(
pd.to_datetime, errors="coerce", infer_datetime_format=True
)
print(df.info())
出力:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Insert_Date 4 non-null object
1 Update_Date 4 non-null object
2 Insert_DateTime 4 non-null datetime64[ns]
3 Update_DateTime 4 non-null datetime64[ns]
dtypes: datetime64[ns](2), object(2)
memory usage: 256.0+ bytes
None
ここでは、apply()
メソッドを使用して、Insert_Date
と Update_Date
を別の列 (Insert_DateTime
と Update_DateTime
) の datetime
に変換しています。 apply()
メソッドは 2つのパラメーターを取ります。
最初のパラメーターは、適用する関数名です。 この場合は pd.to_datetime
です。 2 番目のパラメーターは infer_datetime_format
で、一貫した日付形式を取得するために True
に設定します。
astype()
を使用して複数の列をキャストすることもできることに注意してください。