Pandasをこんなふうに仕事で使っています(日付から曜日(日本語)を取得)

仕事では毎日の作業としてデータベースから必要データをcsvでエクスポートし、種類ごとに向こう2週間ぐらいの日毎の出荷予定数の一覧をexcelに出力するということをPythonを使ってやっています。

日毎のデータを扱うので当然日付や曜日も扱うわけでこれをどのように使っているかのご紹介です。(Python初級者の浅知恵です)

日時のみのデータフレームに曜日のカラムを追加します。
曜日は日本語表記にします。
仮に日時のみのデータフレームを作ってみます。

import pandas as pd
data = {'出荷日': ['2023-09-15', '2023-09-16', '2023-09-17', '2023-09-18', '2023-09-19', '2023-09-20', '2023-09-21', '2023-09-22']}
df = pd.DataFrame(data)
print(df)
#
     出荷日
0  2023-09-15
1  2023-09-16
2  2023-09-17
3  2023-09-18
4  2023-09-19
5  2023-09-20
6  2023-09-21
7  2023-09-22

出荷日の各要素はオブジェクトなのでそのままでは曜日に変換できないので日時型に変換します。

df['出荷日'] = pd.to_datetime(df['出荷日'])

weekdayメソッドを使って出荷日から曜日を取得してみます。

df['曜日'] = df['出荷日'].map(lambda x: x.weekday())
print(df['曜日'])
#
0    4
1    5
2    6
3    0
4    1
5    2
6    3
7    4
Name: 曜日, dtype: int64

weekdayメソッドは日時から曜日を数値として取得するようです。
なお0が月曜日、1が火曜日・・・6が日曜日となります。
数値のままでは曜日が分かりにくいので日本語で表記されるようにします。

weekday_names = ['月', '火', '水', '木', '金', '土', '日']
df['曜日'] = df['出荷日'].map(lambda x: weekday_names[x.weekday()])
print(df)
    出荷日    曜日
0 2023-09-151 2023-09-162 2023-09-173 2023-09-184 2023-09-195 2023-09-206 2023-09-217 2023-09-22

データフレームに日本語で曜日のカラムが追加されました。

他にもいろいろ方法があるとは思いますが、個人的にはこの方法がすっきりしていて分かりやすいと思っています。


この記事が気に入ったらサポートをしてみませんか?