Magicode logo
Magicode
0
2 min read

Python(pandas) で日付マスタを作成する

data_range を使って作成する

日付マスタ(連続した日付・日時データ)を作成したい場合には、 pandas の data_range を使うことで作成することができます。

pandas.date_range の仕様はこちらです。 https://pandas.pydata.org/docs/reference/api/pandas.date_range.html#pandas-date-range

今回は、今月(2022年5月)の日付マスタをしてみたいと思います。

import pandas as pd

start_date = '2022-05-01'
end_date = '2022-05-31'

start_date = pd.to_datetime(start_date)
end_date = pd.to_datetime(end_date)

date_master = pd.date_range(start_date, end_date)
date_master

DatetimeIndex(['2022-05-01', '2022-05-02', '2022-05-03', '2022-05-04', '2022-05-05', '2022-05-06', '2022-05-07', '2022-05-08', '2022-05-09', '2022-05-10', '2022-05-11', '2022-05-12', '2022-05-13', '2022-05-14', '2022-05-15', '2022-05-16', '2022-05-17', '2022-05-18', '2022-05-19', '2022-05-20', '2022-05-21', '2022-05-22', '2022-05-23', '2022-05-24', '2022-05-25', '2022-05-26', '2022-05-27', '2022-05-28', '2022-05-29', '2022-05-30', '2022-05-31'], dtype='datetime64[ns]', freq='D')

また、1日おきなどにしたい場合は、 freq のパラメータを使います。
1日おきにしたい場合の例は以下です。

every_other_day = pd.date_range(start_date, end_date, freq='2D')
every_other_day

DatetimeIndex(['2022-05-01', '2022-05-03', '2022-05-05', '2022-05-07', '2022-05-09', '2022-05-11', '2022-05-13', '2022-05-15', '2022-05-17', '2022-05-19', '2022-05-21', '2022-05-23', '2022-05-25', '2022-05-27', '2022-05-29', '2022-05-31'], dtype='datetime64[ns]', freq='2D')

また、start_date = '2022-05-01' の様にべた書きではなく、今日の日付から生成したい場合は以下です。

import pandas as pd
import datetime
from dateutil.relativedelta import relativedelta

today = datetime.date.today()
#月初
beginning_of_the_month = today + relativedelta(day=1)
print(beginning_of_the_month)
#月末
end_of_month = today + relativedelta(months=+1,day=1,days=-1)
print(end_of_month)

2022-05-01
datetime.date(2022, 5, 31)

Discussion

コメントにはログインが必要です。