Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 날짜 열을 일, 월, 연도로 분할하는 방법

데이터 분석 작업을 하다 보면 하나의 날짜 문자열을 일(day), 월(month), 연도(year)로 나누어야 하는 경우가 자주 발생합니다. 예를 들어 다음과 같은 데이터프레임이 있고, 날짜 열을 세 개의 개별 열로 분할한 결과를 얻고 싶다고 가정해 보겠습니다.

      date  day  month  year
0 17/05/2002 17   05    2002
1 16/02/1990 16   02    1990
2 25/09/1980 25   09    1980
3 11/05/2000 11   05    2000
4 17/09/1986 17   09    1986

해결 방법

이 문제는 판다스(pandas)의 str.split() 메서드를 활용하면 간단하게 해결할 수 있습니다. 전체 과정은 다음 두 단계로 구성됩니다.

  • 날짜 문자열로 이루어진 리스트를 생성하여 데이터프레임에 할당합니다.

  • df['date'] 열에 str.split() 함수를 적용하고, 구분자(delimiter)로 '/'를 지정합니다. 이때 expand=True 옵션을 사용하면 분할된 결과가 별도의 열로 확장되며, 이를 df[["day", "month", "year"]]에 할당합니다.

예제 코드

아래 코드를 통해 실제 동작 과정을 확인해 보겠습니다.

import pandas as pd
df = pd.DataFrame({
      'date': ['17/05/2002','16/02/1990','25/09/1980','11/05/2000','17/09/1986']
    })
print("Original DataFrame:")
print(df)
df[["day", "month", "year"]] = df["date"].str.split("/", expand = True)
print("\nNew DataFrame:")
print(df)

실행 결과

Original DataFrame:
     date
0 17/05/2002
1 16/02/1990
2 25/09/1980
3 11/05/2000
4 17/09/1986
New DataFrame:
      date  day  month year
0 17/05/2002 17    05 2002
1 16/02/1990 16    02 1990
2 25/09/1980 25    09 1980
3 11/05/2000 11    05 2000
4 17/09/1986 17    09 1986

핵심 포인트 정리

str.split("/", expand=True)의 동작 원리를 간단히 살펴보면 다음과 같습니다.

  • str 접근자(accessor): 판다스 시리즈의 문자열 요소에 벡터화된 문자열 연산을 적용할 수 있게 해줍니다.

  • expand=True: 기본값(False)에서는 분할된 결과가 리스트 형태의 단일 시리즈로 반환되지만, True로 설정하면 각 분할 요소가 개별 열을 가진 DataFrame으로 반환됩니다.

참고로 날짜 데이터를 단순히 문자열로 분할하는 대신, pd.to_datetime(df['date'], format='%d/%m/%Y')으로 변환한 뒤 .dt.day, .dt.month, .dt.year 속성을 사용하는 방법도 있습니다. 이 방식은 날짜 유효성 검증까지 함께 수행해 주기 때문에 더 견고한 처리가 필요할 때 유용합니다.