Pandas Datetime 열에서 월과 연도만 추출하는 방법
dt 속성 사용
Pandas DatetimeIndex 또는 DatetimeSeries 객체에는 dt
속성이 있습니다. 이 속성을 사용하여 월, 연도, 요일 등 다양한 날짜 정보에 액세스할 수 있습니다. 월과 연도를 추출하려면 다음과 같은 코드를 사용할 수 있습니다.
import pandas as pd
# 예시 데이터 생성
df = pd.DataFrame({'date': ['2020-01-01', '2020-02-02', '2020-03-03']})
df['date'] = pd.to_datetime(df['date'])
# 월 추출
df['month'] = df['date'].dt.month
# 연도 추출
df['year'] = df['date'].dt.year
이 코드는 다음과 같은 결과를 생성합니다.
date month year
0 2020-01-01 1 2020
1 2020-02-02 2 2020
2 2020-03-03 3 2020
strftime() 함수 사용
strftime()
함수를 사용하여 Datetime 객체를 문자열 형식으로 변환할 수 있습니다. 원하는 형식 문자열을 지정하여 월과 연도만 포함된 문자열을 만들 수 있습니다. 다음과 같은 코드를 사용할 수 있습니다.
import pandas as pd
# 예시 데이터 생성
df = pd.DataFrame({'date': ['2020-01-01', '2020-02-02', '2020-03-03']})
df['date'] = pd.to_datetime(df['date'])
# 월과 연도 추출
df['month_year'] = df['date'].dt.strftime('%Y-%m')
date month_year
0 2020-01-01 2020-01
1 2020-02-02 2020-02
2 2020-03-03 2020-03
lambda 함수 사용
apply()
함수와 함께 lambda 함수를 사용하여 월과 연도를 추출할 수도 있습니다. 다음과 같은 코드를 사용할 수 있습니다.
import pandas as pd
# 예시 데이터 생성
df = pd.DataFrame({'date': ['2020-01-01', '2020-02-02', '2020-03-03']})
df['date'] = pd.to_datetime(df['date'])
# 월과 연도 추출
df[['month', 'year']] = df['date'].apply(lambda x: [x.month, x.year])
date month year
0 2020-01-01 1 2020
1 2020-02-02 2 2020
2 2020-03-03 3 2020
어떤 방법을 사용해야 할까요?
어떤 방법을 사용할지는 개인의 선호와 상황에 따라 다릅니다.
- dt 속성 사용: 가장 간결하고 간편한 방법입니다.
- strftime() 함수 사용: 원하는 형식 문자열로 결과를 얻을 수 있습니다.
- lambda 함수 사용: 더 복잡한 변환을 수행해야 하는 경우 유용합니다.
참고:
- Pandas 버전에 따라
dt
속성의 작동 방식이 다를 수 있습니다. 최신 버전을 사용하는 것이 좋습니다.
추가 정보:
import pandas as pd
# 예시 데이터 생성
df = pd.DataFrame({'date': ['2020-01-01', '2020-02-02', '2020-03-03', '2021-04-04', '2022-05-05']})
df['date'] = pd.to_datetime(df['date'])
# 방법 1: dt 속성 사용
df['month'] = df['date'].dt.month
df['year'] = df['date'].dt.year
# 방법 2: strftime() 함수 사용
df['month_year'] = df['date'].dt.strftime('%Y-%m')
# 방법 3: lambda 함수 사용
df[['month', 'year']] = df['date'].apply(lambda x: [x.month, x.year])
# 결과 출력
print(df)
date month year month_year
0 2020-01-01 1 2020 2020-01
1 2020-02-02 2 2020 2020-02
2 2020-03-03 3 2020 2020-03
3 2021-04-04 4 2021 2021-04
4 2022-05-05 5 2022 2022-05
map()
함수를 사용하여 Datetime 객체를 원하는 함수에 매핑할 수 있습니다. 다음과 같은 코드를 사용할 수 있습니다.
import pandas as pd
# 예시 데이터 생성
df = pd.DataFrame({'date': ['2020-01-01', '2020-02-02', '2020-03-03']})
df['date'] = pd.to_datetime(df['date'])
# 월과 연도 추출
df[['month', 'year']] = df['date'].map(lambda x: [x.month, x.year])
이 코드는 위의 예제와 동일한 결과를 생성합니다.
cut() 함수 사용
cut()
함수를 사용하여 Datetime 열을 월별 범주로 분류한 다음, 범주 이름을 사용하여 월과 연도를 추출할 수 있습니다. 다음과 같은 코드를 사용할 수 있습니다.
import pandas as pd
# 예시 데이터 생성
df = pd.DataFrame({'date': ['2020-01-01', '2020-02-02', '2020-03-03', '2021-04-04', '2022-05-05']})
df['date'] = pd.to_datetime(df['date'])
# 월별 범주 생성
categories = pd.cut(df['date'].dt.month, 12)
# 월과 연도 추출
df['month'] = categories.categories.map(lambda x: x.month)
df['year'] = categories.categories.map(lambda x: x.year)
date month year
0 2020-01-01 1 2020
1 2020-02-02 2 2020
2 2020-03-03 3 2020
3 2021-04-04 4 2021
4 2022-05-05 5 2022
groupby() 함수 사용
import pandas as pd
# 예시 데이터 생성
df = pd.DataFrame({'date': ['2020-01-01', '2020-02-02', '2020-03-03', '2021-04-04', '2022-05-05']})
df['date'] = pd.to_datetime(df['date'])
# 월별 그룹으로 분류
grouped = df.groupby(df['date'].dt.month)
# 월과 연도 계산
df['month'] = grouped['date'].dt.month.first()
df['year'] = grouped['date'].dt.year.first()
date month year
0 2020-01-01 1 2020
1 2020-02-02 2 2020
2 2020-03-03 3 2020
3 2021-04-04 4 2021
4 2022-05-05 5 2022
위에 설명한 방법 외에도 다양한 방법으로 Pandas Datetime 열에서 월과 연도를 추출할 수 있습니다. 사용하는 방법은 개인의 선호와 상황에 따라 다릅니다.
cut()
함수와groupby()
함수는 더 복잡한 변환을 수행하는
python pandas datetime