何がしたいのか?
時系列データがあって、これを「年ごと」ではなく「年度ごと」に集計したい。
例えば下記のような「請求情報」があって、年度ごとに合計したい。
import pandas as pd
# サンプルデータ
data = {
'請求月': ['2020-02-01', '2020-05-01', '2021-02-01', '2021-04-01'],
'請求ID': [1, 2, 3, 4],
'請求金額': [1000, 2000, 1500, 2500],
'取引先名': ['AA', 'BB', 'CC', 'DD']
}
df = pd.DataFrame(data)
# 請求月を日付型に変換
df['請求月'] = pd.to_datetime(df['請求月'])
df
こうするといいようだ
★コメントいただき、もっといい方法がありました!(コメント欄参照)
# 年度を計算する関数
def calc_fiscal_year(date):
if date.month >= 4:
return date.year
else:
return date.year - 1
# 年度カラムを追加
df['年度'] = df['請求月'].apply(calc_fiscal_year)
# 年度ごとの請求金額の合計を計算
result = df.groupby('年度')['請求金額'].sum().reset_index()
result
calc_fiscal_year() がポイントで、気づいちゃえば「そゆことな」て思うけど、始めは「年度の計算、面倒かも」って思ったのです。