首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Aggregate sum over dataframe with conditions

Python Aggregate sum over dataframe with conditions
EN

Stack Overflow用户
提问于 2019-01-26 17:38:01
回答 1查看 41关注 0票数 1

我有一个数据帧,看起来像这样:

代码语言:javascript
复制
stuff datetime value
A 1/1/2019 3
A 1/2/2019 4
A 1/3/2019 5
A 1/4/2019 6
...

我想创建一个新的数据帧,如下所示:

代码语言:javascript
复制
stuff avg_3 avg_4 avg_5
A 3.4 4.5 5.5
B 2.3 4.2 6.1

其中,avg_3是指从今天算起最近3天的平均值,avg_4是指从今天算起最近4天的平均值,等等,按物料分组

我该怎么做?

我当前的代码:

代码语言:javascript
复制
df.groupby('stuff').apply(lambda x: pd.Series(dict(
    day_3=(x.datetime > datetime.now() - timedelta(days = 3)).mean(),
    day_7=(x.datetime > datetime.now() -timedelta(days = 7)).mean())))

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-26 17:58:35

groupby之前创建布尔掩码,通过assign添加新列,并使用mean添加groupby

代码语言:javascript
复制
m1 = df.datetime >  pd.datetime.now() - pd.Timedelta(days = 3)
m2 = df.datetime >  pd.datetime.now() - pd.Timedelta(days = 7)

df = df.assign(day_3=m1, day_7=m2).groupby('stuff')['day_3','day_7'].mean()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54377219

复制
相关文章

相似问题

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