## 환경구축
import pandas as pd
import datetime
import calendar
import holiday
## 데이터프레임 불러오기
## 코드 실행 전 위 '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
실행결과
'Develop > Pandas' 카테고리의 다른 글
[Pandas] 날짜 데이터프레임 업데이트 자동화 (0) | 2021.11.11 |
---|---|
[Pandas] 데이터프레임 열을 Datetime으로 변환하기 (0) | 2021.11.10 |
[Pandas] 데이터프레임 행 열 바꾸기 ; transpose (0) | 2021.11.05 |
[Pandas] 인덱스(index), 컬럼(column) 이름변경 ; rename (0) | 2021.11.05 |
[Pandas] 날짜 포맷 바꾸기 (2000-01-01 → 20000101) (0) | 2021.11.03 |