Pythonで「その週の月曜日」とか「その月の最後の日」など特定の日の日付を取得したいニーズが発生することはあると思います。今日はこれら2つの調べ方やその活用方法などについてご紹介します。
その週の月曜日を取得する方法
Pythonでは日付や時間に関する操作を行うためのdatetime
モジュールが提供されています。このモジュールを使用して、簡単にその週の月曜日を取得することができます。
まず、今日の日付を取得します。
import datetime
today = datetime.date.today()
次に、weekday()
メソッドを使用して、今日が週の何日目か(月曜日が0、日曜日が6)を取得します。そして、その数値を使って、今日からの日数を引くことで月曜日の日付を計算します。
# 今日が週の何日目かを取得
# 月曜日が0、日曜日が6
day_of_week = today.weekday()
# 今日からの日数を引いて月曜日を取得
monday = today - datetime.timedelta(days=day_of_week)
print(monday) # この週の月曜日の日付が表示されます
2023-09-25
その週の〇曜日を取得する方法
その他の曜日の日付を取得する方法も上記の月曜日を取得する方法と同様になります。例えば水曜日を取得する場合、水曜日は週の3日目(月曜日が0から始まるため)なので、月曜日の日付に2日を足すことで水曜日の日付を取得できます。
# 月曜日の日付に2日を足して水曜日を取得
wednesday = monday + datetime.timedelta(days=2)
print(wednesday) # この週の水曜日の日付が表示されます
2023-09-27
その月の最後の日を取得する方法
月の最後の日を取得するためには、calendar
モジュールのmonthrange
関数を使用します。この関数は、指定した年と月の最初の日の曜日とその月の日数を返します。そのため、この関数を使用してその月の日数を取得し、それを使って月の最後の日を計算します。
import calendar
# その月の日数を取得
_, last_day_num = calendar.monthrange(today.year, today.month)
# その月の最後の日を取得
last_day = datetime.date(today.year, today.month, last_day_num)
print(last_day) # その月の最後の日の日付が表示されます
2023-09-30
応用例:pandasである列の日付の日曜日からの経過日数と月末日を計算する
より実践的な例として、この記事でご紹介した方法を用いてPandasのデータフレーム内の日付データに対して、日曜日からの経過日数とその月の月末日を計算する例を示します。
import pandas as pd
import datetime
import calendar
# サンプルのデータフレーム
df = pd.DataFrame({
'date': ['2023-09-25', '2023-10-15', '2023-11-10', '2023-12-20'],
})
df['date'] = pd.to_datetime(df['date'])
# 日曜日からの経過日数を計算
def days_from_sunday(date):
# 今日が週の何日目かを取得(月曜日が0、日曜日が6)
day_of_week = date.weekday()
# 日曜日からの経過日数を計算
return (day_of_week + 1) % 7
df['days_from_sunday'] = df['date'].apply(days_from_sunday)
# 月末日を計算
def get_end_of_month(date):
_, last_day_num = calendar.monthrange(date.year, date.month)
return datetime.date(date.year, date.month, last_day_num)
df['end_of_month'] = df['date'].apply(get_end_of_month)
print(df)
date days_from_sunday end_of_month
0 2023-09-25 1 2023-09-30
1 2023-10-15 0 2023-10-31
2 2023-11-10 5 2023-11-30
3 2023-12-20 3 2023-12-31
上記のように、新しい列days_from_sunday
に各日付の日曜日からの経過日数、end_of_month
にその月の月末日が追加されます。データフレームの加工を行う際に使用することもあるかと思いますので、ぜひご参考にしてください。
以上、Pythonで「その週の〇曜日」や「その月の月末日」などの特定の日付を取得する方法をお伝えしまた。参考にしていただければ嬉しいです。