【Pandas】nヶ月後の日付を求めたい

【Pandas】nヶ月後の日付を求めたい

はじめに

コジマです。

pythonでn日後を求めるために
datetimeモジュールのtimedelta関数を使って求めることができますが、月単位の演算ができません。

from datetime import datetime, timedelta

today = datetime.today()
tomorrow = today + timedelta(days = 1)

print("today:{}".format(today.strftime('%Y/%m/%d')))
print("tomorrow:{}".format(tomorrow.strftime('%Y/%m/%d')))
today:2020/01/07
tomorrow:2020/01/08

nヶ月後の求め方

dateutilモジュールのrelativedelta関数を使用します。
monthsのオプションを渡してあげれば良いです。

from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta

today = datetime.today()
next_month = today + relativedelta(months = 1)

print("today:{}".format(today.strftime('%Y/%m/%d')))
print("next_month:{}".format(next_month.strftime('%Y/%m/%d')))
today:2020/01/07
next_month:2020/02/07

前に戻りたいときは-演算するか、引数にマイナスの値を渡してあげれば良いです。

from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta

today = datetime.today()
tomorrow = today + timedelta(days = 1)# 明日
yesterday = today + timedelta(days = -1) # 昨日(マイナス渡す)
yesterday2 = today - timedelta(days = 1) # 昨日(引く)

next_month = today + relativedelta(months = 1) # 来月
four_months_ago = today + relativedelta(months = -4) # 4ヶ月前(マイナス渡す)
four_months_ago2 = today - relativedelta(months = 4) # 4ヶ月前(引く)

print("today:{}".format(today.strftime('%Y/%m/%d')))
print("yesterday:{}".format(yesterday.strftime('%Y/%m/%d')))
print("yesterday2:{}".format(yesterday2.strftime('%Y/%m/%d')))

print("next_month:{}".format(next_month.strftime('%Y/%m/%d')))
print("four_months_ago:{}".format(four_months_ago.strftime('%Y/%m/%d')))
print("four_months_ago2:{}".format(four_months_ago2.strftime('%Y/%m/%d')))
today:2020/01/07
yesterday:2020/01/06
yesterday2:2020/01/06
next_month:2020/02/07
four_months_ago:2019/09/07
four_months_ago2:2019/09/07

さいごに

まとめると

  • 日付の演算はdatetimeモジュールのtimedelta関数
  • 月単位で変更したいときはdateutilモジュールのrelativedelta関数
  • 足すだけじゃなくて引くこともできるよ

な感じですね!

この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!

以上、コジマでした。


Pythonカテゴリの最新記事