【发布时间】:2021-11-07 22:17:31
【问题描述】:
下面的代码计算与日期 month_changes 相关的 vals 值中的 mean','median','max','min'。该代码通过分隔年份间隔来计算 mean','median','max','min'。我想在代码中实现一点,它为从 starting_year 变量开始的年份的 mean','median','max','min' 值添加零,在这个例子中也添加到彼此之间的年份,如 2020 年,它还将添加零。我怎么能做到这一点?
import numpy as np
import pandas as pd
month_changes = np.array(["2018-04-01 00:00:00", "2018-05-01 00:00:00", "2019-03-01 00:00:00", "2019-04-01 00:00:00","2019-08-01 00:00:00", "2019-11-01 00:00:00", "2019-12-01 00:00:00","2021-01-01 00:00:00"])
vals = np.array([10, 23, 45, 4,5,12,4,-6])
starting_year = 2016
def YearlyIntervals(vals):
data = pd.DataFrame({"Date": month_changes, "Averages": vals})
data["Date"] = pd.to_datetime(data["Date"])
out=(data.groupby(data["Date"].dt.year)
.agg(['mean','median','max','min'])
.droplevel(0,1)
.rename(columns=lambda x:'Average' if x=='mean' else x.title())
)
return out
PnL_YearlyFilter= YearlyIntervals(vals)
输出
Average Median Max Min
Date
2018 16.5 16.5 23 10
2019 14.0 5.0 45 4
2021 -6.0 -6.0 -6 -6
预期输出
Average Median Max Min
Date
2016 0 0 0 0
2017 0 0 0 0
2018 16.5 16.5 23 10
2019 14.0 5.0 45 4
2020 0 0 0 0
2021 -6.0 -6.0 -6 -6
【问题讨论】:
标签: python arrays pandas numpy datetime