はじめに
データ分析をしていると、日付をイテレーションして処理をしたいことがあります。日付データでrange
ってどうやるんだ?と思ったので調べました。
手順
最初は少し戸惑ったのですが、下記のような基本的な書き方をすればいいのだとわかりました。
最初の日付と最後の日付の差分日数をとり、rangeでイテレータを生成します。forを回すときに、timedelta
を使用して、最初の日付に足していくことで、日付ごとの処理をすることができます。
from datetime import date, timedelta
d1 = date(2017,4,1)
d2 = date(2018,3,31)
for i in range((d2 - d1).days + 1):
date = d1 + timedelta(i)
# dateを使った処理
2018/12/3(月)追記
c-yanさんに下記のようなアドバイス頂きましたので追記します。
ジェネレータ化することで再利用しやすい形になりました。
from datetime import date, timedelta
def date_range(start, stop, step = timedelta(1)):
current = start
while current < stop:
yield current
current += step
for date in date_range(date(2017, 4, 1), date(2017, 4, 5)):
# dateを使った処理
print(d)
# 2017-04-01
# 2017-04-02
# 2017-04-03
# 2017-04-04