分别乘以值的 pandas 滚动总和 [英] Pandas rolling sum for multiply values separately

查看:25
本文介绍了分别乘以值的 pandas 滚动总和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下数据框:

a = pd.DataFrame({'unit': [2, 2, 3, 3, 3, 4, 4, 4, 5], 
                 'date': [1, 2, 1, 2, 3, 1, 2, 3, 1], 
                 'revenue': [1, 1, 3, 5, 7, 6, 6, 2, 9]})

窗口 = 2 的 Pandas 滚动.sum:

Pandas rolling.sum with window = 2:

a['rolled_sum'] = a.rolling(2, on='date').sum().shift(+1)['revenue']

逐行计算这个总和:

 adunit   date  revenue  rolled_sum
0   2       1       1       NaN
1   2       2       1       NaN
2   3       1       3       2.0
3   3       2       5       4.0
4   3       3       7       8.0
5   4       1       6       12.0
6   4       2       6       13.0
7   4       3       2       12.0
8   5       1       9       8.0

我想为每个单位单独计算这个滚动总和:

I would like to have this rolling sum computed for each unit separately:

 adunit   date  revenue  rolled_sum
0   2       1       1       NaN
1   2       2       1       NaN
2   3       1       3       NaN
3   3       2       5       NaN
4   3       3       7       8.0
5   4       1       6       NaN
6   4       2       6       NaN
7   4       3       2       12.0
8   5       1       9       NaN

换句话说:应为每个单元单独执行滚动求和.在我的原始数据集中,我有数百个单元,并且希望对每个单元逐日执行滚动求和.

In other words: rolling sum should be performed for each unit separately. In my original dataset I have hundreds of units, and want to perform a rolling sum day-by-day for each of them.

有什么想法吗?

非常感谢:)

安迪

推荐答案

IIUC,你可以在 groupby 上滚动:

IIUC, you can do rolling on groupby:

a['rolled_sum'] = (a.groupby('unit')
                    .rolling(2, on='date').sum()['revenue']
                    .groupby('unit').shift(1)
                    .to_numpy()
                  )

输出:

   unit  date  revenue  rolled_sum
0     2     1        1         NaN
1     2     2        1         NaN
2     3     1        3         NaN
3     3     2        5         NaN
4     3     3        7         8.0
5     4     1        6         NaN
6     4     2        6         NaN
7     4     3        2        12.0
8     5     1        9         NaN

这篇关于分别乘以值的 pandas 滚动总和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆