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()
을 사용하여 여러 열을 캐스팅할 수도 있습니다.