Pandas에서 DataFrame 열을 Datetime으로 변환

Mehvish Ashiq 2023년6월21일
  1. pd.to_datetime()을 사용하여 DataFrame 열을 Datetime으로 변환
  2. pd.astype()을 사용하여 DataFrame 열을 Datetime으로 변환
  3. lambda를 사용하여 DataFrame 열을 Datetime으로 변환
  4. apply()를 사용하여 여러 DataFrame 열을 Datetime으로 변환
Pandas에서 DataFrame 열을 Datetime으로 변환

Python에서 pandas 라이브러리를 사용하여 데이터를 처리하는 동안 때때로 시계열 데이터를 만나야 합니다. 여기에서 문자열 또는 객체 유형 열을 datetime 형식으로 변환해야 할 수 있습니다.

오늘의 튜토리얼은 pd.to_datetime(), astype(), lambdaapply() 메서드를 사용하여 문자열 또는 객체 유형 열을 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

이 출력은 각각 objectdatetime64[ns] 유형의 Dateconverted_to_datetime 열이 있음을 보여줍니다. object 유형을 datetime으로 어떻게 변환했습니까?

아래에서 알아봅시다.

먼저 pandas라는 Python 라이브러리를 가져오고 키 입력을 피하기 위해 별칭을 pd로 설정했습니다. 그런 다음 DD/MM/YYYY 형식의 날짜를 포함하는 Date라는 열이 포함된 데이터 프레임을 생성했습니다.

여기서 형식을 변경할 필요는 없지만 Date 열의 데이터 유형을 object에서 datetime으로 변환해야 합니다. 이를 위해 to_datetime() 메서드를 사용하고 시리즈를 전달하여 데이터 프레임 열을 object에서 datetime으로 변환합니다.

to_datetime() 메서드는 배열, 계열, 데이터 프레임, 스칼라 또는 사전과 같은 것을 함수 인수로 사용하고 지정된 인수를 Pandas datetime 객체로 변환할 수 있습니다. 여기서 info()는 데이터 프레임을 간결하게 요약합니다.

특정 형식의 날짜를 원한다고 가정합니다. 어떻게 할 수 있습니까? 동일한 예제를 실행하여 날짜 형식을 변경해 봅시다.

to_datetime()format 속성과 함께 사용하여 날짜 형식 변경

예제 코드:

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

이전 예제 코드에서는 to_datetime() 메서드를 사용하여 날짜 형식을 지정하는 동안 format 속성을 사용해야 했지만 infer_datetime_formatTrue로 설정하면 자동으로 날짜 형식을 감지하고 지정된 형식을 변환하는 데 도움이 됩니다. 데이터 프레임 열을 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

이 코드 스니펫에서는 lambda 함수와 함께 DataFrame.apply() 메서드를 사용하여 값을 조작했습니다. 여기서는 지정된 날짜 형식을 고려하여 데이터 프레임 열을 datetime으로 변환하기 위해 datetime.strptime() 메서드를 사용했습니다.

람다 표현을 사용합니까? 간단하고 읽기 쉽도록 함수 대신 사용됩니다.

사용하기 전에 datetime을 가져오는 것을 잊지 마십시오.

그런 다음 datetime으로 변환하려는 insertedupdated 열이 있다고 가정합니다. 아래에서 알아보도록 하겠습니다.

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_DateUpdate_Date를 별도의 열(Insert_DateTimeUpdate_DateTime)에서 datetime으로 변환합니다. apply() 메소드는 두 개의 매개변수를 사용합니다.

첫 번째 매개변수는 적용하려는 함수 이름입니다. 이 경우 pd.to_datetime입니다. 두 번째 매개변수는 infer_datetime_format이며 일관된 날짜 형식을 얻기 위해 True로 설정합니다.

astype()을 사용하여 여러 열을 캐스팅할 수도 있습니다.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - Pandas DataFrame Column