Python-GroupBy对象的滚动功能

发布于 2021-01-29 16:32:13

我有一个grouped类型的时间序列对象<pandas.core.groupby.SeriesGroupBy object at 0x03F1A9F0>grouped.sum()给出期望的结果,但我无法获得rolling_sum与该groupby对象一起使用。有什么方法可以将滚动功能应用于groupby对象吗?例如:

x = range(0, 6)
id = ['a', 'a', 'a', 'b', 'b', 'b']
df = DataFrame(zip(id, x), columns = ['id', 'x'])
df.groupby('id').sum()
id    x
a    3
b   12

但是,我希望有这样的东西:

  id  x
0  a  0
1  a  1
2  a  3
3  b  3
4  b  7
5  b  12
关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    注意: 如@kekert所标识,以下熊猫模式已被弃用。请参阅下面的答案中的当前解决方案。

    In [16]: df.groupby('id')['x'].apply(pd.rolling_mean, 2, min_periods=1)
    Out[16]: 
    0    0.0
    1    0.5
    2    1.5
    3    3.0
    4    3.5
    5    4.5
    
    In [17]: df.groupby('id')['x'].cumsum()
    Out[17]: 
    0     0
    1     1
    2     3
    3     3
    4     7
    5    12
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看