取最近N天的平均值

2023-12-04

我有这个数据框:

ID      Date  X  123_Var  456_Var  789_Var
 A  16-07-19  3      777      250      810
 A  17-07-19  9      637      121      529
 A  20-07-19  2      295      272      490
 A  21-07-19  3      778      600      544
 A  22-07-19  6      741      792      907
 A  25-07-19  6      435      416      820
 A  26-07-19  8      590      455      342
 A  27-07-19  6      763      476      753
 A  02-08-19  6      717      211      454
 A  03-08-19  6      152      442      475
 A  05-08-19  6      564      340      302
 A  07-08-19  6      105      929      633
 A  08-08-19  6      948      366      586
 B  07-08-19  4      509      690      406
 B  08-08-19  2      413      725      414
 B  12-08-19  2      170      702      912
 B  13-08-19  3      851      616      477
 B  14-08-19  9      475      447      555
 B  15-08-19  1      412      403      708
 B  17-08-19  2      299      537      321
 B  18-08-19  4      310      119      125

我想展示mean的价值n最后几天(使用Date柱子),不包括当天的值.

我正在使用这段代码(我应该做什么来解决这个问题?):

n = 4

cols = list(df.filter(regex='Var').columns)

df = df.set_index('Date')

df[cols] = (df.groupby('ID').rolling(window=f'{n}D')[cols].mean()
         .reset_index(0,drop=True).add_suffix(f'_{n}'))

df.reset_index(inplace=True)

预期结果:

ID      Date  X  123_Var  456_Var  789_Var   123_Var_4   456_Var_4  789_Var_4
 A  16-07-19  3      777      250      810         NaN         NaN        NaN
 A  17-07-19  9      637      121      529  777.000000  250.000000      810.0
 A  20-07-19  2      295      272      490  707.000000  185.500000      669.5
 A  21-07-19  3      778      600      544  466.000000  196.500000      509.5
 A  22-07-19  6      741      792      907  536.500000  436.000000      517.0
 A  25-07-19  6      435      416      820  759.500000  696.000000      725.5
 A  26-07-19  8      590      455      342  588.000000  604.000000      863.5
 A  27-07-19  6      763      476      753  512.500000  435.500000      581.0
 A  02-08-19  6      717      211      454         NaN         NaN        NaN
 A  03-08-19  6      152      442      475  717.000000  211.000000      454.0
 A  05-08-19  6      564      340      302  434.500000  326.500000      464.5
 A  07-08-19  6      105      929      633  358.000000  391.000000      388.5
 A  08-08-19  6      948      366      586  334.500000  634.500000      467.5
 B  07-08-19  4      509      690      406         NaN         NaN        NaN
 B  08-08-19  2      413      725      414  509.000000  690.000000      406.0
 B  12-08-19  2      170      702      912  413.000000  725.000000      414.0
 B  13-08-19  3      851      616      477  291.500000  713.500000      663.0
 B  14-08-19  9      475      447      555  510.500000  659.000000      694.5
 B  15-08-19  1      412      403      708  498.666667  588.333333      648.0
 B  17-08-19  2      299      537      321  579.333333  488.666667      580.0
 B  18-08-19  4      310      119      125  395.333333  462.333333      528.0
  • 注意:数据框已更改。

我改变unutbu solution工作于rolling:

df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)

n = 5
cols = df.filter(regex='Var').columns
df = df.set_index('Date')
df_ = df.set_index('ID', append=True).swaplevel(1,0)
df1 = df.groupby('ID').rolling(window=f'{n}D')[cols].count()
df2 = df.groupby('ID').rolling(window=f'{n}D')[cols].mean()
df3 = (df1.mul(df2)
          .sub(df_[cols])
          .div(df1[cols].sub(1)).add_suffix(f'_{n}')
          )
df4 = df_.join(df3)

print (df4)
               X  123_Var  456_Var  789_Var   123_Var_5   456_Var_5  789_Var_5
ID Date                                                                       
A  2019-07-16  3      777      250      810         NaN         NaN        NaN
   2019-07-17  9      637      121      529  777.000000  250.000000      810.0
   2019-07-20  2      295      272      490  707.000000  185.500000      669.5
   2019-07-21  3      778      600      544  466.000000  196.500000      509.5
   2019-07-22  6      741      792      907  536.500000  436.000000      517.0
   2019-07-25  6      435      416      820  759.500000  696.000000      725.5
   2019-07-26  8      590      455      342  588.000000  604.000000      863.5
   2019-07-27  6      763      476      753  512.500000  435.500000      581.0
   2019-08-02  6      717      211      454         NaN         NaN        NaN
   2019-08-03  6      152      442      475  717.000000  211.000000      454.0
   2019-08-05  6      564      340      302  434.500000  326.500000      464.5
   2019-08-07  6      105      929      633  358.000000  391.000000      388.5
   2019-08-08  6      948      366      586  334.500000  634.500000      467.5
B  2019-08-07  4      509      690      406         NaN         NaN        NaN
   2019-08-08  2      413      725      414  509.000000  690.000000      406.0
   2019-08-12  2      170      702      912  413.000000  725.000000      414.0
   2019-08-13  3      851      616      477  170.000000  702.000000      912.0
   2019-08-14  9      475      447      555  510.500000  659.000000      694.5
   2019-08-15  1      412      403      708  498.666667  588.333333      648.0
   2019-08-17  2      299      537      321  579.333333  488.666667      580.0
   2019-08-18  4      310      119      125  395.333333  462.333333      528.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

取最近N天的平均值 的相关文章

  • pandas 中任意列表的笛卡尔积[重复]

    这个问题在这里已经有答案了 给定任意数量的列表 我想生成一个 pandasDataFrame作为笛卡尔积 例如 给定 a 1 2 3 b val1 val2 c 100 101 我想最终得到一个DataFrame有柱子a b and c 以
  • 在 Python 中使用 LaTeX 表示法格式化数字

    在Python中使用格式字符串我可以轻松地以 科学记数法 打印数字 例如 gt gt print g 1e9 1e 09 将数字格式化为 LaTeX 格式 即 1 times10 09 的最简单方法是什么 The siunitx http
  • 构造稀疏矩阵后,从稀疏到密集再到稀疏的转换会再次降低密度

    我使用 scipy 生成稀疏有限差分矩阵 最初从块矩阵构建它 然后编辑对角线以考虑边界条件 得到的稀疏矩阵是BSR类型的 我发现如果我将矩阵转换为稠密矩阵 然后使用以下命令返回稀疏矩阵scipy sparse BSR matrix函数 我留
  • numpy polyfit 通过 0

    假设我有x and y带有权重向量的向量wgt 我可以拟合三次曲线 y a x 3 b x 2 c x d 通过使用np polyfit如下 y fit np polyfit x y deg 3 w wgt 现在 假设我想做另一次拟合 但这
  • x = os.system(..) 的返回值[重复]

    这个问题在这里已经有答案了 当我打字时os system whoami 在Python中 作为root 它返回root 但是当我尝试将它分配给变量时x os system whoami 它将 x 的值设置为 0 为什么 os system
  • 找到给定点的最小面积矩形以计算长轴和短轴长度的算法

    I have a set of points black dots in geographic coordinate value derived from the convex hull blue of a polygon red see
  • Python对象实例中的dict不包含该类的方法

    当创建对象的实例时 它的字典不包含类方法 一个例子是 class A object def init self value self value value def some func self pass instance A some v
  • 使用 TOX 运行 Flake8 测试时出现 Unicode 错误

    我是 Tox 新手 我想将其设置为在我的项目上运行 flake8 测试 但当我尝试运行 tox 时 我不断收到 unicode 错误 UnicodeDecodeError ascii codec can t decode byte 0xe2
  • 如何使用 python 将 OpenCV 输出发送到浏览器?

    我有一个带有 open cv 的简单 python 脚本 它接收视频并使用 YOLO 对其进行对象检测 我的问题是 如何将输出作为实时流显示到我的网站 这是Python代码 保存到output avi import cv2 from dar
  • 如何在 Linux 上取消焦点(模糊)Python-gi GTK+3 窗口

    我想做什么以及为什么 我希望我的窗口取消聚焦 因此选择了上一个聚焦的窗口 为什么 我想与先前选择的窗口 来自其他程序 进行交互 我当前的计划是 取消窗口焦点 使用libxdo模拟击键 然后再次聚焦我的窗口 我的窗口可以设置在顶部 以帮助避免
  • 使用 Numpy 或 Scipy 的累积乘积

    我有一个一维 numpy 数组 我希望将其转换为其累积乘积 一个幼稚的实现是这样的 import numpy as np arr 1 2 3 4 5 6 7 8 9 10 c sum np prod arr i for i in range
  • setup.py是什么?

    What is setup py以及如何配置或使用它 setup py是一个 python 文件 它的存在表明您要安装的模块 包可能已使用 Distutils 打包和分发 Distutils 是分发 Python 模块的标准 这使您可以轻松
  • 加速结构化 NumPy 数组

    NumPy数组在性能和易用性方面都非常出色 比列表更容易切片 索引 我尝试构建一个数据容器NumPy structured array代替dict of NumPy arrays 问题是性能要差得多 使用同质数据的情况大约是 2 5 倍 而
  • pytest 在参数化中使用固定装置作为参数

    我想使用固定装置作为参数pytest mark parametrize或者会产 生相同结果的东西 例如 import pytest import my package pytest fixture def dir1 fixture retu
  • Flask多参数从一个url查询数据库的多列时如何避免多个if语句

    我正在尝试使用 Flask 作为前端来构建一个会计数据库 主页是分类帐 有九列 日期 描述 借方 贷方 金额 帐户 参考 日记帐 和 年份 我需要能够每次查询一次两个 已有超过 8000 个条目 并且还在不断增加 到目前为止 我的代码显示了
  • UTF-16-LE 文件的 Python 字符串替换

    Python 2 6 使用 Python string replace 似乎不适用于 UTF 16 LE 文件 我想到了2种方法 找到一个可以处理 Unicode 字符串操作的 Python 模块 将目标 Unicode 文件转换为 ASC
  • Azure Cosmos DB,删除 IDS(肯定存在)

    这可能是一个非常简单和愚蠢的错误 但我不确定这是如何失败的 我已经用过https github com Azure azure cosmos python insert data https github com Azure azure c
  • 根据 Pandas 中用户指定的日期列和输入参数计算特定函数

    我有一个 df 如下所示 Date t factor 2020 02 01 5 2020 02 03 23 2020 02 06 14 2020 02 09 23 2020 02 10 23 2020 02 11 23 2020 02 13
  • Python - 比较2个文件并输出差异

    我的目标是编写一个脚本来比较文件中的每一行 并根据此比较创建一个新文件 其中包含第二个文件中不存在的文本行 例如 File 1 Bob 20 Dan 50 Brad 34 Emma 32 Anne 43 File 2 Dan 50 Emma
  • 装饰器更改返回类型时键入函数

    如何正确编写返回类型被装饰器修改的函数的类型 简单的例子 def example decorator fn def wrapper data res fn data return join res return wrapper exampl

随机推荐

  • before_create 仍然保存

    在一切之前我要感谢你的帮助 我有一个这样的模型 attr protected nil belongs to product belongs to user before create add ammount def carted produ
  • 对于嵌入式应用程序从 std::string 切换到 std::wstring?

    到目前为止 我一直在嵌入式系统 路由器 交换机 电信设备等 的 C 应用程序中使用 std string 对于下一个项目 我正在考虑从 std string 切换到 std wstring 以支持 Unicode 例如 这将允许最终用户在命
  • 使用 vbscript 隐藏打开指定 url 和指定浏览器的链接

    我想转换这个批处理命令 start msedge exe new window https www google com 到 vbscript 文件 这样我就可以隐藏地打开它 我试过这个 Set WshShell WScript Creat
  • Pdf 的字段应在 asp.net 中使用 itextsharp 保持可编辑状态

    我有一个可填写的pdf 其中我有几个文本框 我使用以下代码 itextsharp 填充这些字段 DataTable dt new DataTable String pdfPath1 Server MapPath pdfs transmitt
  • 大文字显得模糊

    我正在使用 SFML 1 6 制作一个小游戏 我需要显示一些文本 所以我使用sf String班级 问题是 当我将尺寸增加到 96pt 时 边缘显得有点模糊 不过 当我增加 Microsoft Word 中的文本大小时 它看起来非常干净并且
  • 如何用Python四舍五入到小数点后两位? [复制]

    这个问题在这里已经有答案了 我在这段代码的输出中得到了很多小数 华氏度到摄氏度转换器 我的代码目前如下所示 def main printC formeln typeHere def typeHere global Fahrenheit tr
  • 使用 bash 脚本将密钥代码发送到 Xorg + wine

    如何将密钥代码发送到在 wine 下运行的 linux 中当前运行的应用程序 为了简单起见 我希望它位于 bash 下 使用名为xvkbd 它应该存在于每个 Linux 发行版中 语法很简单 xvkbd text line of keyco
  • CGAffineTransform 连接:适当的转换顺序

    我知道 每当我们想要对一个点同时应用一系列变换时 我们必须指定与我们想要感知的相反方向的序列 如果我想翻译 T 然后旋转 R 一个点x我们需要以串联矩阵结束RT 那么每个点都变换为 RT x 苹果转型文档显示 CGAffineTransfo
  • gnuplot:在for循环中设置线条样式

    我必须在同一张图上绘制几条曲线 我必须使用 for 循环来做到这一点 我想用线绘制前两条曲线 用点绘制其他曲线 我可以用线绘制所有曲线或用点绘制所有曲线 但不能在同一个 for 循环中进行更改 这是我的代码的相关部分 set style l
  • 停止后台工作者

    我的应用程序使用后台工作人员在循环内执行一些工作 我拥有它 以便在每次循环迭代时 它检查取消挂起是否为真 如果是 则中断循环 一切正常 我的应用程序在完成循环的当前迭代后停止处理 问题是我认为后台工作人员仍在运行 如果我单击按钮再次开始处理
  • 在 Hibernate 中持久化 LinkedList

    我试图保留一个具有 LinkedList 属性的类 但似乎无法正确执行 这是我的代码和映射 import java util LinkedList public class Stuff implements java io Serializ
  • 强制刷新到 Observable.Buffer c#

    有没有办法强制 Observable Buffer 在缓冲时间结束之前刷新 在示例中 mSubscription mFluxObservable Buffer new TimeSpan 0 0 1 30 Subscribe o gt sav
  • App Store (iTunes Connect) 的 512x512 图像,Apple 会像在手机上那样进行圆角处理吗?

    将 iPhone 应用程序提交到 iTunes Connect 进行 AppStore 分发后 他们会要求提供 512x512 像素的图像 以下是提交位置旁边的内容 将在 App Store 上使用的应用程序图标的大版本 它必须至少为 72
  • 如何使用gekko估计FOPDT方程中的theta值?

    我正在尝试使用 GEKKO 来拟合某个数据集 使用 FOPDT 优化方法来估计 k tau 和 theta 我看到了使用 odeint 的示例https apmonitor com pdc index php Main FirstOrder
  • HIBERNATE - JPA2 - H2 - 按键查询@ElementCollections HashMap

    我正在使用 hibernate entitymanager 3 6 4 Final 和 h2 数据库 1 3 155 我正在使用 H2Dialect 我在按 ElementCollection 中的元素过滤记录时遇到问题 这是我的实体 En
  • BackReference 使用带有 Unicode 的 Python 正则表达式

    我使用 Python 2 7 使用 Google App Engine 以下是代码片段 coding utf 8 KEYWORD u 英語 URL u http www google com content u 和製英語 日本 作 英語風
  • 程序中得到意外的输出

    这是代码 String sql 1 select emp id password from regid ResultSet rs st executeQuery sql 1 while rs next if employee equals
  • 并行调用 async/await 函数

    据我了解 在 ES7 ES2016 中放置了多个await代码中的 的工作方式与链接类似 then 带有承诺 这意味着它们将一个接一个地执行 而不是并行执行 例如 我们有这样的代码 await someCall await anotherC
  • 使用 vkEnumerateInstanceVersion 获取准确的 Vulkan API 版本

    我在用vkEnumerateInstanceVersion获取 vulkan api 版本并将其传递给VkApplicationInfo结构 我可以轻松区分VK VERSION 1 0 and VK VERSION 1 1 query th
  • 取最近N天的平均值

    我有这个数据框 ID Date X 123 Var 456 Var 789 Var A 16 07 19 3 777 250 810 A 17 07 19 9 637 121 529 A 20 07 19 2 295 272 490 A 2