我正在尝试解决如何从数据框中获取年初至今的值与去年至今的值。 数据框:
ID start_date distance
1 2019-7-25 2
2 2019-7-26 2
3 2020-3-4 1
4 2020-3-4 1
5 2020-3-5 3
6 2020-3-6 3
有数据可以追溯到2017年,并且将继续添加更多数据,因此我希望YTD和LYTD在当前年份的基础上保持动态。 我知道如何获取每年和每月的累计金额,但是我真的在如何计算YTD和LYTD方面很挣扎。
year_month_distance_df = distance_kpi_df.groupby(["Start_Year","Start_Month"]).agg({"distance":"sum"}).reset_index()
我尝试过的其他代码:
cum_sum_distance_ytd =
distance_kpi_df[["start_date_local","distance"]]
cum_sum_distance_ytd = cum_sum_distance_ytd.set_index("start_date_local")
cum_sum_distance_ytd = cum_sum_distance_ytd.groupby(pd.Grouper(freq = "D")).sum()
当我尝试这种逻辑并将Start_Day添加到该组时,显然只是将当天的所有数据相加。
预期输出: 年初至今= 8 迄今为止的去年= 4
答案 0 :(得分:0)
您可以将日期拆分为各个部分,并通过以下方式获得所有年份的年初至今
expanding = df.groupby([
df.start_date.month, df.start_date.day, df.start_date.year
]).distance.sum().unstack().cumsum()
在任何年份中行日期中没有值的地方,都会用np.nan
填充堆积...如果有问题,可以使用fill_value
参数
.unstack(fill_value=0).cumsum()