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

Python Pandas – strftime()으로 날짜 형식에 맞는 포맷 문자열 Index 반환하기

Pandas에서 날짜 형식(date format)에 따라 지정된 포맷 문자열들의 Index를 반환하려면 DateTimeIndex.strftime() 메서드를 사용합니다. 이 메서드는 datetime 값들을 원하는 형식의 문자열로 변환하여 새로운 Index 객체로 돌려주므로, 날짜 데이터를 보고서나 로그 형태로 가공할 때 매우 유용합니다.

1. 라이브러리 임포트

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

2. DatetimeIndex 생성

시작 시점을 '2021-10-30 02:30:50'으로 하고, 기간(periods)은 7개, 빈도(freq)는 '2D'(2일 간격)로 설정하며, 시간대(timezone)는 'Australia/Adelaide'로 지정하여 DatetimeIndex를 생성합니다.

datetimeindex = pd.date_range('2021-10-30 02:30:50', periods=7, tz='Australia/Adelaide', freq='2D')

3. 생성된 DatetimeIndex 확인

print("DateTimeIndex...\n", datetimeindex)

4. strftime()으로 날짜 포맷 변환

strftime() 메서드에 다양한 포맷 지시자(directive)를 조합한 형식 문자열을 전달하면, 각 날짜가 해당 형식으로 변환된 문자열 Index를 얻을 수 있습니다.

print("\nFormat with different directives...\n",
datetimeindex.strftime('%b. %d, %Y was a %A'))

주요 포맷 지시자 정리

  • %b : 축약된 월 이름 (예: Oct, Nov)
  • %d : 0이 채워진 일(day) 숫자
  • %Y : 4자리 연도
  • %A : 요일의 전체 이름 (예: Saturday, Monday)

전체 예제 코드

import pandas as pd

# 기간 7개, 빈도 2D(2일 간격)인 DatetimeIndex 생성
# 시간대는 Australia/Adelaide로 지정
datetimeindex = pd.date_range('2021-10-30 02:30:50', periods=7, tz='Australia/Adelaide', freq='2D')

# DatetimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)

# DatetimeIndex의 빈도 출력
print("\nDateTimeIndex frequency...\n", datetimeindex.freq)

# 다양한 포맷 지시자를 적용한 결과 출력
print("\nFormat with different directives...\n",
datetimeindex.strftime('%b. %d, %Y was a %A'))

실행 결과

위 코드를 실행하면 아래와 같은 출력이 생성됩니다.

DateTimeIndex...
DatetimeIndex(['2021-10-30 02:30:50+10:30', '2021-11-01 02:30:50+10:30',
'2021-11-03 02:30:50+10:30', '2021-11-05 02:30:50+10:30',
'2021-11-07 02:30:50+10:30', '2021-11-09 02:30:50+10:30',
'2021-11-11 02:30:50+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='2D')

DateTimeIndex frequency...
<2 * Days>

Format with different directives...
Index(['Oct. 30, 2021 was a Saturday', 'Nov. 01, 2021 was a Monday',
'Nov. 03, 2021 was a Wednesday', 'Nov. 05, 2021 was a Friday',
'Nov. 07, 2021 was a Sunday', 'Nov. 09, 2021 was a Tuesday',
'Nov. 11, 2021 was a Thursday'],
dtype='object')

실행 결과에서 볼 수 있듯이, strftime()은 각 날짜를 '%b. %d, %Y was a %A' 형식(예: "Oct. 30, 2021 was a Saturday")으로 변환한 문자열들을 담은 새로운 Index를 반환합니다. 이처럼 strftime() 하나만으로 복잡한 날짜 포맷팅 작업을 손쉽게 처리할 수 있습니다.