Python Pandas:按列分组时获取滚动求和

Python Pandas:按列分组时获取滚动求和,python,pandas,dataframe,rolling-sum,Python,Pandas,Dataframe,Rolling Sum,我有一个熊猫数据框,看起来像 Name Date Value Sarah 11-01-2015 3 Sarah 11-02-2015 2 Sarah 11-03-2015 27 Bill 11-01-2015 42 Bill 11-02-2015 5 Bill 11-03-2015 15 .... (a couple hundred ro

我有一个熊猫数据框,看起来像

Name    Date               Value
Sarah   11-01-2015         3
Sarah   11-02-2015         2
Sarah   11-03-2015         27
Bill    11-01-2015         42
Bill    11-02-2015         5
Bill    11-03-2015         15
.... (a couple hundred rows)
我如何获得这些值的30天(或x天)滚动总和,由“名称”列中的任何人进行分解?理想的输出将具有与当前数据帧相同的列,但不是让每行的值成为该人员当天的值,而是他们在过去30天内的值的累积和

我知道我能行

result = pd.rolling_sum(df, 30)

以获得总的滚动总和。但是我如何返回一个数据帧,其中滚动总和按“Name”列分组?

使用grigri group\u resample函数计算出来

df = group_resample(df,date_column='Date',groupby=group_by,value_column='Value',how='sum',freq='d')
df = df.unstack(group_by).fillna(0)
result = pd.rolling_mean(df,30)

请注意,如果您不需要精确的时间窗口,或者如果您的数据集每[day,user]有一行(这似乎是您的情况),那么熊猫的标准groupby非常适合。看

否则,类似于:

df.groupby('Name').rolling('30D',on=“Date”).Value.sum()


应该行。

就在几天前,有一个类似(几乎完全相同)的python滚动总和的小组,但在过去7天。我的回答建议使用SQL来实现这一点,并避免在内存中重新构造它。如果你的数据帧是从数据库中派生出来的,考虑一下这样的路由。最好的办法是用你提供的链接报告这个问题:)