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

2024-09-29 21:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据帧,看起来像

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天中这些值的累计和。在

我知道我能行

^{pr2}$

得到滚动总和。但是,如何返回一个按“Name”列分组的滚动和的数据帧呢?在


Tags: 数据name名称pandasdatevaluerows理想
2条回答

请注意,如果您不需要精确的时间窗口,或者如果您的数据集每[天,用户]有一行(这似乎是您的情况),那么标准的pandas groupby非常适合。见this very similar question

否则,类似于:

在数据框groupby('Name')。滚动('30D',on=“Date”)。值.总和()

应该行得通。在

用grigri group重采样函数解决了这个问题。在

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)

相关问题 更多 >

    热门问题