์๋ณธ ๊ฒ์๊ธ: https://velog.io/@euisuk-chung/TS-์ฃผ์๋ณ-์ด๊ธฐ-๋ ์ง-๋ณํ-ํจ์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| import pandas as pd
import datetime
def replace_week_start_date(date_str):
date = datetime.datetime.strptime(str(date_str), "%Y%m%d")
year = date.year
month = date.month
week_number = date.isocalendar()[1]
if (month==1) and (week_number >= 52): # 52 ๋๋ 53์ผ ์ ์์์ ๊ณ ๋ คํฉ๋๋ค.
year -= 1
week_number = 52 if week_number == 53 else week_number # 53์ฃผ์ฐจ๋ 52์ฃผ์ฐจ๋ก ๋ณ๊ฒฝ
start_date = datetime.datetime.strptime(f"{year}-W{week_number}-1", "%G-W%V-%u")
else:
start_date = datetime.datetime.strptime(f"{year}-W{week_number}-1", "%G-W%V-%u")
return start_date
def replace_month_start_date(date_str):
date = datetime.datetime.strptime(str(date_str), "%Y%m%d")
year = date.year
month = date.month
start_date = datetime.datetime(year, month, 1)
# start_date.strftime("%Y%m%d")
return start_date
|
1
2
3
4
5
6
7
8
9
10
11
12
| # ์์ ๋ฐ์ดํฐ ํ๋ ์ ์์ฑ
data = {
'YYYYMMDD': ['20200102', '20210104', '20210105','20210330']
}
df = pd.DataFrame(data)
# apply ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋์ฒด๋ ๊ฐ์ ์ ์ฉ
df['YYYYWK']= df['YYYYMMDD'].apply(replace_week_start_date)
df['YYYYMM']= df['YYYYMMDD'].apply(replace_month_start_date)
print(df)
|
1
2
3
4
5
| YYYYMMDD YYYYWK YYYYMM
0 20200102 2019-12-30 2020-01-01
1 20210104 2021-01-04 2021-01-01
2 20210105 2021-01-04 2021-01-01
3 20210330 2021-03-29 2021-03-01
|