Pandas 按组时间累积总和

2023-11-24

我有一个数据框,其中为每个 id 记录 1 个或多个事件。对于每个事件,都会记录 id、度量 x 和日期。像这样的东西:

import pandas as pd
import datetime as dt
import numpy as np
x = range(0, 6)
id = ['a', 'a', 'b', 'a', 'b', 'b']
dates = [dt.datetime(2012, 5, 2),dt.datetime(2012, 4, 2),dt.datetime(2012, 6, 2),
         dt.datetime(2012, 7, 30),dt.datetime(2012, 4, 1),dt.datetime(2012, 5, 9)]

df =pd.DataFrame(np.column_stack((id,x,dates)), columns = ['id', 'x', 'dates'])

我希望能够设置回溯期(即 70 天),并为数据集中的每一行计算该 id 的任何先前事件的 x 累积和以及所需回溯内的值(不包括该行的 x)正在执行计算)。 最终应该看起来像:

  id  x                dates    want
0  a  0  2012-05-02 00:00:00    1
1  a  1  2012-04-02 00:00:00    0
2  b  2  2012-06-02 00:00:00    9
3  a  3  2012-07-30 00:00:00    0
4  b  4  2012-04-01 00:00:00    0
5  b  5  2012-05-09 00:00:00    4

我需要执行类似的操作,所以我看了一点,在 pandas 的食谱(我热烈推荐给任何愿意了解这个包的所有巨大可能性的人)中找到了这个页面:Pandas:按时间间隔滚动平均值。使用最新版本的 pandas,您可以传递一个附加参数,该参数将用于根据类似 date_time 的列计算 roll() 函数的窗口。所以这个例子变得更加简单:

# First, convert the dates to date time to make sure it's compatible
df['dates'] = pd.to_datetime(df['dates'])

# Then, sort the time series so that it is monotonic
df.sort_values(['id', 'dates'], inplace=True)

# '70d' corresponds to the the time window we are considering
# The 'closed' parameter indicates whether to include the interval bounds
# 'yearfirst' indicates to pandas the format of your time series
df['want'] = df.groupby('id').rolling('70d', on='dates', closed='neither'
    )['x'].sum().to_numpy()

df['want'] = np.where(df['want'].isnull(), 0, df['want']).astype(int)
df.sort_index() # to dispay it in the same order as the example provided
  id  x      dates  want
0  a  0 2012-05-02     1
1  a  1 2012-04-02     0
2  b  2 2012-06-02     9
3  a  3 2012-07-30     0
4  b  4 2012-04-01     0
5  b  5 2012-05-09     4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas 按组时间累积总和 的相关文章

  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • 如何返回 cost, grad 作为 scipy 的 fmin_cg 函数的元组

    我怎样才能使 scipy 的fmin cg使用一个返回的函数cost and gradient作为元组 问题是有f对于成本和fprime对于梯度 我可能必须执行两次操作 非常昂贵 grad and cost被计算 此外 在它们之间共享变量可
  • 在Python中从大文件中搜索单词列表

    我是新蟒蛇 我有一个单词列表和一个非常大的文件 我想删除文件中包含单词列表中的单词的行 单词列表按排序给出 并且可以在初始化期间输入 我正在努力寻找解决这个问题的最佳方法 我现在正在进行线性搜索 这花费了太多时间 有什么建议么 您可以使用i
  • 使用 Boto3 以字符串形式打开 S3 对象

    我知道使用 Boto 2 可以使用以下命令将 S3 对象作为字符串打开 get contents as string http boto readthedocs org en latest ref file html highlight c
  • 无法在 selenium 和 requests 之间传递 cookie,以便使用后者进行抓取

    我用 python 结合 selenium 编写了一个脚本来登录网站 然后从driver to requests这样我就可以继续使用requests进行进一步的活动 I used item soup select one div class
  • 创建上下文后将 jar 文件添加到 pyspark

    我正在笔记本上使用 pyspark 并且不处理 SparkSession 的创建 我需要加载一个包含一些我想在处理 rdd 时使用的函数的 jar 您可以使用 jars 轻松完成此操作 但在我的特定情况下我无法做到这一点 有没有办法访问sp
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • Python Tkinter 模块不显示输出

    我正在尝试学习 Python 并尝试使用 Python 中的 GUI 并遇到了这个 Tkinter 模块 我的代码运行 但运行时窗口没有出现 我的代码如下 from Tkinter import to create a root windo
  • Arcpy 模数在 Pycharm 中不显示

    如何将 Arcpy 集成到 Pycharm 中 我尝试通过导入模块但它没有显示 我确实知道该模块仅适用于 2 x python arcpy 在 PyPi Python 包索引 上不可用 因此无法通过 pip 安装 要使用 arcpy 您需要
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • 使用 for 循环创建一系列元组

    我已经搜索过 但找不到答案 尽管我确信它已经存在了 我对 python 很陌生 但我以前用其他语言做过这种事情 我正在以行形式读取数据文件 我想将每行数据存储在它自己的元组中 以便在 for 循环之外访问 tup i inLine wher
  • python中basestring和types.StringType之间的区别?

    有什么区别 isinstance foo types StringType and isinstance foo basestring 对于Python2 basestring是两者的基类str and unicode while type
  • 如何查找或安装适用于 Python 的主题 tkinter ttk

    过去 3 个月我一直在制作一个机器人 仅用代码就可以完美运行 现在我的下一个目标是为它制作一个 GUI 但是我发现了一些障碍 主要的一个是能够看起来不像一个 30 年前的程序 我使用的是 Windows 7 我仅使用 Python 3 3
  • Python 中维基百科 API 中的 DisambiguationError 和 GuessedAtParserWarning

    我想获得维基百科与搜索词相关的可能且可接受的名称列表 在这种情况下是 电晕 当输入以下内容时 print wikipedia summary Corona 这给出了以下输出 home virej local lib python3 8 si
  • 在Raspberry pi上升级skimage版本

    我已经使用 Raspberry Pi 2 上的 synaptic 包管理器安装了 python 包 然而 skimage 模块版本 0 6 是 synaptic 中最新的可用版本 有人可以指导我如何将其升级到0 11 因为旧版本中缺少某些功
  • 使用 PIL 在 Tkinter 中显示动画 GIF

    我正在尝试制作一个程序来使用 Tkinter 显示动画 GIF 这是我最初使用的代码 from future import division Just because division doesn t work right in 2 7 4
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某
  • IndexError - 具有匀称形状的笛卡尔 PolygonPatch

    我曾经使用 shapely 制作一个圆圈并将其绘制在之前填充的图上 这曾经工作得很好 最近 我收到索引错误 我将代码分解为最简单的操作 但它甚至无法执行最简单的循环 import descartes import shapely geome

随机推荐

  • 如何在 Visual Studio 2008 中自定义复制/粘贴行为?

    如何在 Visual Studio 2008 中自定义复制 粘贴行为 例如我创建一个新的 div div 然后将其复制并粘贴到同一个文件中 VisualStudio 粘贴 div div 而不是我复制的原文 更令人沮丧的是 当我尝试复制一组
  • 通过 Javascript 访问 Google Apps 公共电子表格

    花了很多时间看这个 似乎有关访问 Google apps 电子表格的少量信息维护得不是很好 今年的 Google IO 上宣布了增强的 Google apps 脚本 包括 UI 元素 这让我想到创建一个基于 Google 电子表格中的数据的
  • 在 MVC 操作中将 SSRS 报告导出为 PDF

    是的 我想将 SSRS 报告导出为 PDF 并从我的操作中返回它 我没有任何报告查看器 请建议我如何实现这一目标 到目前为止我已经做到了 public void SqlServerReport NetworkCredential nwc n
  • 指针和数组混淆的 K&R Qsort 示例

    我发现很难理解下面的代码片段 我理解所显示的指向函数风格的指针 但我发现混乱之处在于指示的行中 void qsort void v int left int right int comp void void int i last void
  • 带有数字填充的 CSS 计数器 [重复]

    这个问题在这里已经有答案了 可以垫吗counter数字取决于其价值 div counter reset ruler div gt span display block line height 1rem div gt span before
  • 在VS2022中的wsl2中调试控制台时读取输入

    我在 Visual Studio 2022 中创建了一个控制台应用程序 只有两行 WriteLine 和 ReadLine 在 Windows 上调试它时 会打开一个控制台 显示输出并等待输入 但是 如果我将其切换到 WSL 调试 我会在
  • Java:ArrayList如何管理内存

    在我的数据结构课程中 我们研究了 Java ArrayList 类 以及当用户添加更多元素时它如何增长底层数组 这是可以理解的 但是 我无法弄清楚当从列表中删除大量元素时 此类到底如何释放内存 查看源码 删除元素的方法有3种 public
  • 如何指定退出或中止的方法

    我有一个从 CLI 触发的方法 该方法具有一些显式退出或中止的逻辑路径 我发现 在为此方法编写规范时 RSpec 将其标记为失败 因为退出是异常 这是一个简单的例子 def cli method if condition puts Ever
  • 如何使用 sox 合并多个音频文件

    我使用以下命令通过 sox 将两个音频文件合并为一个 sox end mp3 p pad 6 0 sox m start mp3 output mp3 我想知道如何仅使用一个命令来合并 3 或 4 个音频文件 而不是使用 output mp
  • #java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester

    我正进入 状态java lang NoClassDefFoundError org apache commons digester Digester错误 我被这个错误困扰了一个多月 我已经尝试了所有可用的 Digester 版本 并且还检查
  • 与 Tensorflow 中的常规 LSTMCell 相比,使用 CudnnLSTM 训练时的结果不同

    我正在 Python 中使用 Tensorflow 训练 LSTM 网络 并希望切换到 tf contrib cudnn rnn CudnnLSTM 以加快训练速度 我所做的被替换 cells tf nn rnn cell LSTMCell
  • Google 地图 -“除非更新 Google Play 服务,否则应用程序将无法运行”

    我只是想在这里运行简单的 Google 地图教程 https developers google com maps documentation android start 我正在 Nexus 4 上运行我的应用程序 并且收到带有 更新 按钮
  • Grafana划分2系列

    我试图将两个系列分开以获得它们的比率 例如 我的网站 a com b com c com 为 所有网站 他们每个人都有总部分数和发生错误的统计数据 我想将每个站点的错误 部分显示为条形错误 部分 其中部分 gt 错误到该站点的每个错误 在这
  • Python 正则表达式不工作

    我正在使用以下代码 downloadlink re findall http uploadir com u b str downloadhtml 但是 当我传递以下字符串时
  • 在 shell 脚本中调用 awk

    我有这个命令 如果直接在终端上运行 它可以正确执行 awk word print NR file txt head n 1 目的是找到单词所在行的行号 word 首先出现在file txt 但是当我把它放在脚本文件中时 它似乎不起作用 bi
  • 将 MediaWiki 站点迁移到 Windows Sharepoint Services Wiki

    有人找到了将 MediaWiki 页面迁移到 WSS Wiki 的方法吗 我们刚刚安装了 Sharepoint 2007 虽然它似乎满足了我们的需求 但它似乎不是 Microsoft 提供的任何用于将 MediaWiki 页面迁移到 WSS
  • 带有 Angular 的 ASP.NET MVC:- 页面刷新或重新加载会出现 404 错误

    角度版本 5 我正在使用 ASP NET MVC 开发一个新项目 并将 Angular 5 与其集成 该项目工作正常 只是页面刷新产生 404 页面未找到错误 每当我从浏览器点击刷新或重新加载页面时 都会出现 404 错误 我已经阅读了许多
  • 删除重复项,保留具有最大绝对值的条目

    假设我有四个样本 id 1 2 3 和 4 每个样本都有一个或多个测量值 gt a lt data frame id c 1 1 2 2 3 4 value c 1 2 3 4 5 6 gt a id value 1 1 1 2 1 2 3
  • ScreenUpdating = False 在 Excel 2013 和 2016 中失败

    我几年前开发的基于 Excel 的长期运行的高端应用程序在 Excel 2007 和 2010 中运行良好 在 Excel 2013 和 2016 中看起来就像业余时间 因为Application ScreenUpdating False不
  • Pandas 按组时间累积总和

    我有一个数据框 其中为每个 id 记录 1 个或多个事件 对于每个事件 都会记录 id 度量 x 和日期 像这样的东西 import pandas as pd import datetime as dt import numpy as np