40
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

日付でfor文を回す方法

Last updated at Posted at 2018-11-26

はじめに

データ分析をしていると、日付をイテレーションして処理をしたいことがあります。日付データで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

40
24
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?