본문으로 바로가기

 


 

## 환경구축
import pandas as pd
import datetime
import calendar
import holiday

 

date_df.xlsx
0.05MB

## 데이터프레임 불러오기
## 코드 실행 전 위 'date_df'를 같은 경로에 다운받을 것

df = pd.read_excel('date', sheet_name = 'data')
df
## 임시(temp) 데이터프레임 만들기

temp = df[['Date']]
temp
## '월 말일' 변수생성

last_days = pd.date_range('20100101', '20211101', freq='M')
last_days

 

## holidays 모듈 불러오기

import holidays
kor_holidays = list(holidays.KOR(years = range(2010, 2030)).keys())
kor_holidays
## 평일(weekday) 확인
# 0, 1, 2, 3, 4 = 월요일 ~ 금요일
# 5, 6 = 토요일 ~ 일요일

temp['Date'] = pd.to_datetime(temp['Date'], format='%Y%m%d')
temp['Date']
## 월 말일의 weekday 확인

last_days.weekday
## 해당 날짜가 '월 말일' & '공휴일 또는 주말' => 해당 전일(working_days)로 타켓 설정 (예: 2021년 9월 30일이 일요일 경우, 28일을 타켓('1')설정)

target_days = []
for last_day in last_days:    
    while (last_day in kor_holidays) or (last_day.weekday() == 5 or last_day.weekday() == 6):
        diff_days = datetime.timedelta(days=1)
        last_day = last_day - diff_days
    target_days.append(last_day)
        
target_days
temp['target'] = temp['Date'].apply(lambda data : 1 if data in target_days else 0) 
temp[temp['target'] == 1]
temp

 

실행결과