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

标签 python pandas dataframe rolling-sum

我有一个看起来像的 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 天的值的累积总和。

我知道我能做到

result = pd.rolling_sum(df, 30)

获取总体滚动总和。但是如何返回一个数据帧,其中滚动总和按“名称”列分组?

最佳答案

使用 grigri group_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)

关于python - Pandas:按列分组时获取滚动总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33792332/

相关文章:

用于将 PDF 转换为文本的 Python 模块

python - 使用 for 循环创建元组列表

python - 带列表的数据帧的多索引切片

python - 使用numpy填充序列并将特征数组与序列数组的数量组合

python - 获取每行的三个最小值并返回对应的列名

python - 平均 Pandas 数据框中的单元格 block

python - biopython - Entrez.esearch() 查询翻译与我的查询不符

Python 键盘模块在没有 root 的情况下无法工作

python - 如何从 .t​​xt 文件的特定列创建 pandas 数据框?

python - 如何以追加模式将 DataFrame 导出到_json - Python Pandas?