首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有分组依据的拖尾或移动平均值

具有分组依据的拖尾或移动平均值
EN

Stack Overflow用户
提问于 2018-08-15 05:57:38
回答 1查看 839关注 0票数 4

我想在执行groupby时计算拖尾或移动平均值。在下面的例子中,我展示了一个5日移动平均线。

我的数据看起来像这样:

代码语言:javascript
复制
ID  Date         KG      Volume
1   8/10/2018    1,000   10 
1   8/11/2018    500     6 
1   8/12/2018    750     2 
1   8/13/2018    500     6 
1   8/13/2018    500     6 
1   8/14/2018    1,000   4 
2   8/1/2018     1304    8
2   8/2/2018     626     1
2   8/3/2018     955     3
2   8/8/2018     445     4
2   8/10/2018    1356    11
2   8/13/2018    524     7
2   8/14/2018    331     5

我想按ID和date列分组,然后计算KG/Volume列的尾随5天平均值(从今天的日期开始,将是8/10-8/14)。我需要group by on ID和Date的原因是像ID 1这样的情况,其中日期8/13/18出现了两次。在本例中,我希望8/13/18的ID 1有一个1000 KG的条目用于平均计算(而不是两个500的条目)。

预期输出将类似于:

代码语言:javascript
复制
ID  Avg_KG  Avg_Vol
1   850     7 
2   442.2   4.6

还请注意,ID 2缺少平均计算所需的5天中的2天。ID 2的两个缺失天数在平均值计算中应被计算为0。这就是为什么KG平均值是442.2,而不是ID2的737.

我曾尝试使用.rolling(5).mean(),但在将其与groupby语句结合使用时得到了不正确的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-15 06:16:41

首先,进行一些设置:

代码语言:javascript
复制
df.Date = pd.to_datetime(df.Date)
df.KG = df.KG.str.replace(',', '').astype(int)

现在groupby DateID和sum复制天数:

代码语言:javascript
复制
s = df.groupby(['Date', 'ID']).agg({'KG': 'sum', 'Volume': 'sum'}).reset_index(1)

            ID    KG  Volume
Date
2018-08-01   2  1304       8
2018-08-02   2   626       1
2018-08-03   2   955       3
2018-08-08   2   445       4
2018-08-10   1  1000      10
2018-08-10   2  1356      11
2018-08-11   1   500       6
2018-08-12   1   750       2
2018-08-13   1  1000      12
2018-08-13   2   524       7
2018-08-14   1  1000       4
2018-08-14   2   331       5

下一步,为了重新采样以说明“缺失”的天数:

代码语言:javascript
复制
out = s.groupby('ID').resample('1D').asfreq().drop('ID', 1).reset_index(0).fillna(0)

最后,索引过去5天的DataFrame,并使用mean

代码语言:javascript
复制
out.groupby('ID').tail(5).groupby('ID').mean()

        KG  Volume
ID
1.0  850.0     6.8
2.0  442.2     4.6
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51850299

复制
相关文章

相似问题

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