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 열이 있음을 보여줍니다. 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_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
이 코드 스니펫에서는 lambda 함수와 함께 DataFrame.apply() 메서드를 사용하여 값을 조작했습니다. 여기서는 지정된 날짜 형식을 고려하여 데이터 프레임 열을 datetime으로 변환하기 위해 datetime.strptime() 메서드를 사용했습니다.
왜 람다 표현을 사용합니까? 간단하고 읽기 쉽도록 함수 대신 사용됩니다.
사용하기 전에 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() 메소드는 두 개의 매개변수를 사용합니다.
첫 번째 매개변수는 적용하려는 함수 이름입니다. 이 경우 pd.to_datetime입니다. 두 번째 매개변수는 infer_datetime_format이며 일관된 날짜 형식을 얻기 위해 True로 설정합니다.
astype()을 사용하여 여러 열을 캐스팅할 수도 있습니다.
