首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Pandas年初至今与去年迄今(YTD,LYTD)

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

Stack Overflow用户
提问于 2020-08-26 12:24:07
回答 1查看 278关注 0票数 0

我正在尝试解决如何从数据帧中获取今年到目前为止与去年到目前为止的值。数据帧:

代码语言:javascript
复制
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。

代码语言:javascript
复制
    year_month_distance_df = distance_kpi_df.groupby(["Start_Year","Start_Month"]).agg({"distance":"sum"}).reset_index()

我尝试过的其他代码如下:

代码语言:javascript
复制
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添加到group by中时,它显然只是将当天的所有数据相加。

预期产出:年初至今=8去年迄今=4

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-26 13:03:58

您可以将日期拆分为各个部分,并使用以下命令获得所有年份的ytd

代码语言:javascript
复制
expanding = df.groupby([
    df.start_date.month, df.start_date.day, df.start_date.year
    ]).distance.sum().unstack().cumsum()

在任何年份的行日期中没有值的地方,出栈都将填充np.nan ...如果有问题,可以使用fill_value参数

代码语言:javascript
复制
.unstack(fill_value=0).cumsum()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63590465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档