list range of dates
리스트 항목에 연속된 날짜 범위를 넣는 방법을 알아보겠습니다.
목 차
🧩1. List Comprehension 사용하기
🧩2. pandas 모듈 date_range() 함수 사용
🧩3. for ~ range() 함수 사용
🧩4. rrule모듈 사용하기
🧩1. List Comprehension 사용하기
[연산 for x in range(범위)]
- 기간을 나타내는 숫자 변수 numdays을 정해 놓고, datetime 모듈의 timedelta 함수를 사용해서 일수를 증가하면서 날짜를 뺀다.
- List Comprehension 이 x(numdays) 만큼 반복이 되면서 리스트를 채운다
- 반환되는 값의 type는 datetime 이므로, string으로 변환해주기 위해서는 .strftime("%Y%m%d") 함수를 사용한다.
from datetime import datetime
from datetime import timedelta
numdays = 10
base = datetime.today()
date_list = [(base - timedelta(days=x)).strftime("%Y%m%d") for x in range(numdays)]
print(date_list)
🧩2. pandas 모듈 date_range() 함수 사용
date_range( 종요일자 = a, 기간 =b)
- 원하는 내용을 입력합니다.
import pandas as pd
from datetime import datetime
date_list = pd.date_range(end = datetime.today(), periods = 10).tolist()
#list 내 datetine type을 string type로 변환하기
date_list_str = []
for x in range(len(date_list)):
date_list_str.append(date_list[x].strftime("%Y%m%d"))
print(date_list_str)
🧩3. for ~ range() 함수 사용
for x in range (0, 기간)
- 1번과 마찬가지로 datetime.timedelta(days = x) 함수로 일자수만큼 날짜를 빼면서 리스트에 담는다.
import datetime
endDate = datetime.datetime.today()
numdays = 10
date_list = []
date_list_str = []
for x in range (0, numdays):
date_list.append(endDate - datetime.timedelta(days = x))
#list 내 datetine type을 string type로 변환하기
for x in range(len(date_list)):
date_list_str.append(date_list[x].strftime("%Y%m%d"))
print(date_list_str)
# print(date_list)
🧩4. rrule모듈 사용하기
rrule.rrule(주기, count=횟수, dtstart = 시작일자)
- rrule.rrule(주기, count=횟수, dtstart = 시작일자) 함수를 list()로 만듭니다.
from dateutil import rrule
from datetime import datetime
date_list = list(rrule.rrule(rrule.DAILY,count=10,dtstart=datetime.now()))
#list 내 datetine type을 string type로 변환하기
date_list_str =[]
for x in range(len(date_list)):
date_list_str.append(date_list[x].strftime("%Y%m%d"))
print(date_list_str)
# print(date_list)
참고 자료
https://stackoverflow.com/questions/993358/creating-a-range-of-dates-in-python
0 댓글