Python Pandas에서 DataFrame 열을 날짜 시간 형식으로 변환하는 방법
to_datetime() 함수 사용
Pandas에서 날짜 열을 DateTime 형식으로 변환하는 가장 일반적인 방법은 to_datetime()
함수를 사용하는 것입니다. 이 함수는 문자열, 숫자 또는 다른 형식의 데이터를 DateTime 객체로 변환합니다.
import pandas as pd
# 문자열 형식의 날짜 열 생성
data = {'날짜': ['2020-01-01', '2020-02-02', '2020-03-03']}
df = pd.DataFrame(data)
# '날짜' 열을 DateTime 형식으로 변환
df['날짜'] = pd.to_datetime(df['날짜'])
print(df.dtypes)
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
날짜 dtype
0 2020-01-01 datetime64[ns]
1 2020-02-02 datetime64[ns]
2 2020-03-03 datetime64[ns]
to_datetime()
함수는 다음과 같은 인수를 선택적으로 사용할 수 있습니다.
format
: 날짜 문자열의 형식을 지정합니다. (예: '%Y-%m-%d', '%H:%M:%S')errors
: 잘못된 형식의 날짜 문자열을 처리하는 방법을 지정합니다. ('coerce', 'raise', 'ignore')infer_datetime_format
: 자동으로 날짜 형식을 추측합니다.
errors 인수 사용
날짜 문자열 형식이 일관적이지 않은 경우 errors
인수를 사용하여 잘못된 형식을 처리하는 방법을 지정할 수 있습니다.
'coerce'
: 가능한 경우 잘못된 형식을 가장 가까운 유효한 날짜 형식으로 변환합니다.'raise'
: 잘못된 형식을 만나면 예외를 발생시킵니다.'ignore'
: 잘못된 형식을 무시하고 NaN 값으로 변환합니다.
# 날짜 형식이 일관되지 않은 문자열 열 생성
data = {'날짜': ['2020-01-01', '2020-02-02', '2020-03-03A']}
df = pd.DataFrame(data)
# 'errors' 인수를 사용하여 잘못된 형식 처리
try:
df['날짜'] = pd.to_datetime(df['날짜'], errors='coerce')
except Exception as e:
print(e)
print(df)
날짜
0 2020-01-01
1 2020-02-02
2 NaT
2020-03-03A
는 올바른 날짜 형식이 아니므로 NaN 값으로 변환되었습니다.
parse_dates 옵션 사용
read_csv()
함수를 사용하여 CSV 파일을 불러올 때 parse_dates
옵션을 사용하여 특정 열을 자동으로 DateTime 형식으로 변환할 수 있습니다.
# CSV 파일 불러오기 및 '날짜' 열을 DateTime 형식으로 변환
data = pd.read_csv('data.csv', parse_dates=['날짜'])
# '날짜' 열 확인
print(data['날짜'].dtype)
위 코드에서 data.csv
파일에 '날짜' 열이 포함되어 있으며 올바른 날짜 형식으로 저장되어 있다고 가정합니다. parse_dates
옵션을 지정하면 Pandas는 해당 열을 자동으로 DateTime 형식으로 변환합니다.
apply() 함수 사용
예제 코드
문자열 형식 날짜 열 변환
이 코드는 문자열 형식의 '날짜' 열을 포함하는 DataFrame을 만들고 to_datetime()
함수를 사용하여 DateTime 형식으로 변환합니다.
import pandas as pd
# 문자열 형식의 날짜 열 생성
data = {'날짜': ['2020-01-01', '2020-02-02', '2020-03-03']}
df = pd.DataFrame(data)
# '날짜' 열을 DateTime 형식으로 변환
df['날짜'] = pd.to_datetime(df['날짜'])
print(df.dtypes)
errors 인수 사용
이 코드는 날짜 형식이 일관되지 않은 문자열 형식의 '날짜' 열을 포함하는 DataFrame을 만들고 errors
인수를 사용하여 잘못된 형식을 처리합니다.
import pandas as pd
# 날짜 형식이 일관되지 않은 문자열 열 생성
data = {'날짜': ['2020-01-01', '2020-02-02', '2020-03-03A']}
df = pd.DataFrame(data)
# 'errors' 인수를 사용하여 잘못된 형식 처리
try:
df['날짜'] = pd.to_datetime(df['날짜'], errors='coerce')
except Exception as e:
print(e)
print(df)
parse_dates 옵션 사용
이 코드는 '날짜' 열이 포함된 CSV 파일을 불러오고 parse_dates
옵션을 사용하여 해당 열을 자동으로 DateTime 형식으로 변환합니다.
import pandas as pd
# CSV 파일 불러오기 및 '날짜' 열을 DateTime 형식으로 변환
data = pd.read_csv('data.csv', parse_dates=['날짜'])
# '날짜' 열 확인
print(data['날짜'].dtype)
Pandas에서 DataFrame 열을 날짜 시간 형식으로 변환하는 대체 방법
datetime 모듈 사용
datetime
모듈을 사용하여 문자열을 직접 DateTime 객체로 변환할 수 있습니다. 이 방법은 간단한 문자열 데이터를 처리하는 경우에 유용할 수 있습니다.
import datetime
# 문자열을 DateTime 객체로 변환
date_str = '2020-01-01'
date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')
print(type(date_obj))
<class 'datetime.datetime'>
Pandas DataFrame에서 datetime
객체를 포함하는 열을 만들려면 다음과 같이 할 수 있습니다.
import pandas as pd
# 문자열 형식의 날짜 열 생성
data = {'날짜': ['2020-01-01', '2020-02-02', '2020-03-03']}
df = pd.DataFrame(data)
# '날짜' 열을 'datetime' 객체로 변환
df['날짜'] = df['날짜'].apply(lambda x: datetime.datetime.strptime(x, '%Y-%m-%d'))
print(df.dtypes)
numpy 모듈 사용
numpy
모듈을 사용하여 날짜 문자열을 포함하는 배열을 DateTime 형식으로 변환할 수 있습니다. 이 방법은 to_datetime()
함수보다 빠르게 처리할 수 있는 큰 데이터 세트에 유용할 수 있습니다.
import pandas as pd
import numpy as np
# 문자열 형식의 날짜 데이터 생성
date_str = np.array(['2020-01-01', '2020-02-02', '2020-03-03'])
# 'datetime64[ns]' 형식의 DateTime 배열 생성
date_dt = np.datetime64(date_str, format='%Y-%m-%d')
# DataFrame으로 변환
df = pd.DataFrame({'날짜': date_dt})
print(df.dtypes)
정규 표현식 사용
정규 표현식을 사용하여 문자열에서 날짜 정보를 추출하고 DateTime 객체로 변환할 수 있습니다. 이 방법은 복잡한 형식의 날짜 문자열을 처리해야 하는 경우에 유용할 수 있습니다.
import pandas as pd
import re
# 날짜 문자열 형식이 다양한 데이터 생성
data = {'날짜': ['2020-01-01', '02/03/2020', '2020-03-03A']}
df = pd.DataFrame(data)
# 정규 표현식을 사용하여 날짜 문자열 추출
def extract_date(date_str):
match = re.search(r'(\d{4})-(\d{1,2})-(\d{1,2})', date_str)
if match:
return match.group(1, 2, 3)
else:
return None
df['날짜'] = df['날짜'].apply(extract_date)
# 문자열을 DateTime 객체로 변환
df['날짜'] = pd.to_datetime(df['날짜'], errors='coerce')
print(df)
위 코드는 다양한 형식의 날짜 문자열을 추출하고 to_datetime()
함수를 사용하여 DateTime 객체로 변환합니다.
python pandas dataframe