如何仅在过去 365 天使用 group by 对 pandas 数据框执行滚动求和

2024-01-12

尝试计算 p_id 仅过去 365 天的滚动总和,创建一个包含此滚动总和的新列。具有新列的数据框应如下所示:

Date        p_id    points          roll_sum
                                
2016-07-29  57        11            11
2016-08-01  57        9             20
2017-01-12  57        5             25
2017-10-23  57        18            23
2018-03-03  57        0             18
2018-03-06  57        4             22
2019-03-16  57        3             3
1997-04-07  12        50            50
1997-04-09  12        32            82
1998-02-11  12        3             85
1998-05-12  12        0             3
1999-05-22  12        0             3
1999-05-29  12        15            18
2000-07-20  12        2             2
2002-10-27  12        17            19

使用此命令时出现错误“窗口必须是整数”:

df.groupby(['Date', 'p_id'])['points'].rolling('365D', min_periods=1).sum()

or this:

df.reset_index(level=0).set_index('Date').groupby('p_id').points.rolling('365D').sum()

尝试在 SO 上搜索,得到了与我类似的答案,但它使用了 python 2.x 的冗余命令

可以使用代码重新创建数据框:

dates = ['2016-07-29',
'2016-08-01',
'2017-01-12',
'2017-10-23',
'2018-03-03',
'2018-03-06',
'2019-03-16',
'1997-04-07',
'1997-04-09',
'1998-02-11',
'1998-05-12',
'1999-05-22',
'1999-05-29',
'2000-07-20',
'2002-10-27']


pid = [57,57,57,57,57,57,57,12,12,12,12,12,12,12,12]

points = [11,9 ,5 ,18,0 ,4 ,3 ,50,32,3 ,0 ,0 ,15,2 ,17]

roll_sum = [11,20,25,23,18,22,3 ,50,82,85,3 ,3 ,18,2 ,19]

df = pd.DataFrame({'Date': dates,
            'p_id': pid,
            'points':points,
            'roll_sum':roll_sum})

如果数据帧的索引和,您可以将其添加为系列roll_sum匹配;这里的索引包括"p_id", "Date"

df["Date"] = df.Date.astype("datetime64")
roll_calc = df.groupby("p_id").rolling('365D', on="Date")["points"].sum()
df = df.set_index(["p_id", "Date"])
df["roll_sum_calc"] = roll_calc

output:

                 points  roll_sum  roll_sum_calc
p_id Date
57   2016-07-29      11        11           11.0
     2016-08-01       9        20           20.0
     2017-01-12       5        25           25.0
     2017-10-23      18        23           23.0
     2018-03-03       0        18           18.0
     2018-03-06       4        22           22.0
     2019-03-16       3         3            3.0
12   1997-04-07      50        50           50.0
     1997-04-09      32        82           82.0
     1998-02-11       3        85           85.0
     1998-05-12       0         3            3.0
     1999-05-22       0         3            0.0
     1999-05-29      15        18           15.0
     2000-07-20       2         2            2.0
     2002-10-27      17        19           17.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何仅在过去 365 天使用 group by 对 pandas 数据框执行滚动求和 的相关文章

随机推荐

  • 迁移到 V1.3 时,Angularjs 未捕获错误:[$injector:modulerr]

    我正在学习 Angular js 但我无法弄清楚这个简单的代码有什么问题 它看起来不错 但给了我以下错误 Error Uncaught Error injector modulerr http errors angularjs org 1
  • 当我向解析树添加标签时,lxml 中的漂亮打印失败

    我有一个 xml 文件 我正在使用 lxml 中的 etree 来处理它 但是当我向其中添加标签时 漂亮的打印似乎不起作用 gt gt gt from lxml import etree gt gt gt root etree parse
  • 如何在C#中使用TransactionScope?

    我正在尝试使用TransactionScope 但继续出现下面的异常 如果这很重要的话 应用程序与数据库运行在不同的机器上 我正在使用 SQL Server 2005 分布式事务管理器 MSDTC 的网络访问已被禁用 请在安全配置中启用网络
  • Windows 7 中没有 TortoiseSVN 的上下文菜单

    我在用着Windows 7旗舰版 https en wikipedia org wiki Windows 7 editions Main editions64 位 我从官方网站安装了最新的 64 位版本的 TortoiseSVN 重新启动了
  • 如何解析具有一位数偏移量的时区? “1969 年 12 月 31 日星期三 00:00:00 GMT-8”

    我有这个日期 Wed Dec 31 00 00 00 GMT 8 1969 但不能用这个 SimpleDateFormat 解析 new SimpleDateFormat EEE MMM dd hh mm ss zzz yyyy 我如何指定
  • OleDataAdapter Fill 方法将空行返回到数据表

    这是我的代码 public static DataTable GetDataFromSpreadsheet OleDbConnection conn DataTable dt new DataTable OleDbCommand cmd n
  • Java 中的读取密钥

    我是 Java 新手 是否有与 C 中的 ReadKey 类似的方法来避免控制台应用程序关闭 thanks 您还可以使用System in read 如果您同意仅使用 Enter 键作为退出键
  • 如何在 python opencv GUI 中打印一些功能?

    我想在 python openCV 中打印图像的平均值 高度和宽度 我使用了两个按钮 获取照片和分析图像 和不同的 GUI 一个用于获取照片 def openphoto 和另一个用于打印这些特征 def feature 但我收到错误 注意
  • 究竟什么是超长形式/编码?

    正在阅读关于 UTF 8 的维基百科文章 http en wikipedia org wiki UTF 8 我一直想知道这个词overlong 该术语多次使用 但本文没有提供其含义的定义或参考 我想知道是否有人可以解释该术语及其目的 它是一
  • 当变量更改时更新 tkinter 标签

    我正在尝试使用 python tkinter 模块构建一个应用程序 目前 我正在尝试让标签显示的文本在选择单选按钮时更改 我将标签文本设置为文本变量 以及根据选择的按钮将文本变量更改为所需文本的函数 但是 我预计标签文本会发生变化 因为它的
  • 为什么我们不喜欢用 Big-O 表示法指定常数因子?

    让我们考虑一下经典的大 O 表示法定义 证明链接 http www phil uu nl datastructuren 10 11 knuth big omicron pdf O f n 是存在正常数的所有函数的集合C and n0 wit
  • 如何以编程方式更改布局的可见性

    有一种方法可以更改 XML 中视图的可见性 但如何以编程方式更改 XML 中定义的布局的可见性 如何获取布局对象
  • Ansible 模板中出现额外空格

    我正在生成配置文件 我希望它们能够缩进 我从 Jinja2 模板开始 当从简单的 python 程序调用时 该模板可以正确呈现 当我从 ansible 调用它时 除了循环的第一行之外 我将在所有行上获得 2 个额外的空格 生成 YAML 和
  • UIReferenceLibraryViewController hasDictionaryDefinition 仅适用于 iPhone 5s 上的模拟器

    当我调用这段代码时 NSString word hello bool response UIReferenceLibraryViewController dictionaryHasDefinitionForTerm word 在 iPhon
  • 递归搜索对象

    我想递归搜索并替换数组中的元素 该数组是基于树的 所以看起来像 Object Children Object type A Object type B Object Children Object type A Object etc 我希望
  • 推送到新的远程分支时更新被拒绝错误

    我已经分叉了一个 github 存储库 现在我的分叉已经进行了几次提交 我现在想提供one这些提交作为原始存储库的 PR 下列的这个问题的答案 https stackoverflow com questions 21527233 creat
  • 设置请求优先级齐射

    我正在尝试使用 Android 中的 Volley 库设置请求的优先级 我不知道如何设置请求优先级 StringRequest request new StringRequest Request Method GET feed URL vo
  • 何时使用转换或转换

    我很想知道演员表和演员表之间有什么区别int与使用相比Convert ToInt32 使用它是否会带来某种性能提升 另外 每种情况应该用于哪些情况 目前我更倾向于使用Convert但我没有理由走任何一条路 在我看来 他们都实现了同一个目标
  • 我们如何改变tableview标题的字体?

    我正在为 tabelView 使用一些背景颜色 并且样式已分组 各部分标题中的文本不清楚 因此我需要修改文本颜色 以便标题文本应该可见 我想知道我们可以更改标题文本的颜色和大小吗 添加 terente 的答案 UIView tableVie
  • 如何仅在过去 365 天使用 group by 对 pandas 数据框执行滚动求和

    尝试计算 p id 仅过去 365 天的滚动总和 创建一个包含此滚动总和的新列 具有新列的数据框应如下所示 Date p id points roll sum 2016 07 29 57 11 11 2016 08 01 57 9 20 2