Python Pandas年初至今与去年至今(YTD,LYTD)

时间:2020-08-26 04:24:07

标签: python pandas

我正在尝试解决如何从数据框中获取年初至今的值与去年至今的值。 数据框:

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

1 个答案:

答案 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()