Python で日付の範囲のリストを作成する
日付の範囲のリストを生成するためのいくつかの方法を紹介します。そのための 1つの方法は、pandas
ライブラリを使用することです。Pandas は、タスクを達成するための直接サポートを持っています。もう 1つの方法は、for ループを使用して手動で独自のロジックを設計し、日付を生成することです。
開始日とその k 日を入力して日付の範囲のリストを作成するなどの例を見ていきます。または、開始日と終了日を入力することもできます。
Python で Pandas を使用して日付の範囲のリストを作成する
Pandas の date_range()
関数を使用します。この関数では、開始日とその後の日数(期間と呼ばれます)を渡します。ここでは、datetime
ライブラリを使用して日付をフォーマットし、このフォーマット DD-MM-YY
で日付を出力できるようにしました。日付とともにタイムスタンプを定義することもできます。
コード例:
この例では、DD-MM-YY
とピリオドの形式で開始日を渡します。したがって、出力には、開始日から始まる日数の範囲と、その後の periods
の数のリストが表示されます。
# python 3.x
import datetime
import pandas as pd
start = datetime.datetime.strptime("01-12-2021", "%d-%m-%Y")
date_generated = pd.date_range(start, periods=5)
print(date_generated.strftime("%d-%m-%Y"))
出力:
Index(['01-12-2021', '02-12-2021', '03-12-2021', '04-12-2021', '05-12-2021'], dtype='object')
次に、開始日
と終了日
を渡す別の例を見ていきます。プログラムは、これら 2つの日付の間の日付の範囲を出力します。
# python 3.x
import datetime
import pandas as pd
start = datetime.datetime.strptime("01-12-2021", "%d-%m-%Y")
end = datetime.datetime.strptime("07-12-2021", "%d-%m-%Y")
date_generated = pd.date_range(start, end)
print(date_generated.strftime("%d-%m-%Y"))
出力:
Index(['01-12-2021', '02-12-2021', '03-12-2021', '04-12-2021', '05-12-2021',
'06-12-2021', '07-12-2021'],
dtype='object')
Python で手動で日付範囲のリストを作成する
for ループと timedelta()
を使用して、リストを手動で生成できます。timedelta()
は、datetime
ライブラリで定義されている関数です。ここで、デルタは差を意味します。その助けを借りて、日付でデルタを加算または減算して、それぞれ次の日付または前の日付を取得できます。日付が 01-12-2021 であるとしましょう。ここで、1 を追加すると、日付は 02-12-2021 になります。そのロジックを for ループで使用します。for
ループが繰り返され、次の日付を取得するために開始日を含む変数を追加し、完全な日付範囲を取得するまで、現在生成されている日付をリストに追加
します。
サンプルコード:
# python 3.x
import datetime
start = datetime.date(2021, 12, 10)
periods = 5
daterange = []
for day in range(periods):
date = (start + datetime.timedelta(days=day)).isoformat()
daterange.append(date)
print(daterange)
出力:
['2021-12-10', '2021-12-11', '2021-12-12', '2021-12-13', '2021-12-14']
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn