[python] list range of dates 연속된 날짜 리스트

list range of dates

리스트 항목에 연속된 날짜 범위를 넣는 방법을 알아보겠습니다.

🧩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 댓글