当前位置: 首页 > 面试题库 >

如何在前瞻性的基础上使用Pandas rolling_ *函数

梁丘权
2023-03-14
问题内容

假设我有一个时间序列:

In[138] rng = pd.date_range('1/10/2011', periods=10, freq='D')
In[139] ts = pd.Series(randn(len(rng)), index=rng)
In[140]
Out[140]:
2011-01-10    0
2011-01-11    1
2011-01-12    2
2011-01-13    3
2011-01-14    4
2011-01-15    5
2011-01-16    6
2011-01-17    7
2011-01-18    8
2011-01-19    9
Freq: D, dtype: int64

如果使用rolling_ *函数之一,例如rolling_sum,则可以得到想要的行为,用于向后看的滚动计算:

In [157]: pd.rolling_sum(ts, window=3, min_periods=0)
Out[157]: 
2011-01-10     0
2011-01-11     1
2011-01-12     3
2011-01-13     6
2011-01-14     9
2011-01-15    12
2011-01-16    15
2011-01-17    18
2011-01-18    21
2011-01-19    24
Freq: D, dtype: float64

但是,如果我想做一笔前瞻性的款项怎么办?我已经尝试过这样的事情:

In [161]: pd.rolling_sum(ts.shift(-2, freq='D'), window=3, min_periods=0)
Out[161]: 
2011-01-08     0
2011-01-09     1
2011-01-10     3
2011-01-11     6
2011-01-12     9
2011-01-13    12
2011-01-14    15
2011-01-15    18
2011-01-16    21
2011-01-17    24
Freq: D, dtype: float64

但这不完全是我想要的行为。我正在寻找的输出是:

2011-01-10    3
2011-01-11    6
2011-01-12    9
2011-01-13    12
2011-01-14    15
2011-01-15    18
2011-01-16    21
2011-01-17    24
2011-01-18    17
2011-01-19    9

即-我想要“当前”天加上接下来的两天的总和。我目前的解决方案还不够,因为我担心边缘会发生什么。我知道我可以通过设置两个分别移动1天和2天的列,然后将三列相加来手动解决此问题,但是必须有一个更优雅的解决方案。


问题答案:

为什么不只是在相反的系列上做(并反过来回答):

In [11]: pd.rolling_sum(ts[::-1], window=3, min_periods=0)[::-1]
Out[11]:
2011-01-10     3
2011-01-11     6
2011-01-12     9
2011-01-13    12
2011-01-14    15
2011-01-15    18
2011-01-16    21
2011-01-17    24
2011-01-18    17
2011-01-19     9
Freq: D, dtype: float64


 类似资料:
  • 问题内容: 我正在尝试对Elasticsearch查询进行否定前瞻,正则表达式为: 我要匹配的文本是: 归还了住宿费用,但仍存在建筑问题。喷洒化学药品会引起健康问题,并引起眼睛刺激。 我没有任何幸运。有人可以帮忙吗? ES查询: 问题答案: 您可以使用以下两种方法之一来解决此问题: 要么 带可选的(因为 默认情况下 为ON ) 它是如何工作的? 在常见的NFA正则表达式中,通常会有负面的环顾四周,

  • 函数 函数的定义 函数是指由 事件驱动 或 当它被调用时 执行的可重复使用 的代码块。 函数定义的方式有两种: 函数由关键字function定义,第一种定义方式:函数声明形式 function abs (x) { if (x > 0) { return x; } else { return; } } 其中,abs为函数名,x为参数,多个参数用逗号","隔开, 花括号里的

  • 首先,regex需要同时适用于python和PCRE(PHP)。我试图忽略正则表达式模式后面是否有字母“x”,以区分维度和下面给定示例中的字符串(如“number/number”): 从这里,我试图提取,但不是因为该部分实际上是维度的一部分。到目前为止,我想出了这个正则表达式 它可以提取我不希望它提取的内容,它看起来像这样。如果我将正面展望更改为负面,它会捕获除 中的最后一个“3”之外的两个。它看

  • 我有一个spring微服务应用程序,它使用redis服务器进行缓存存储。使用RedisCacheManager Api。在这里,我们可以选择设置“setDefaultExpiration”。因为rediscachemanager从第一次访问带注释的方法(@cacheable)开始计算过期时间。 我想从可缓存方法的最后一次访问计算到期时间,而不是从第一次访问。Google库已经给出了实现这一目标的直

  • 简介 ES6对函数的扩展比较多,主要有三点:新的书写方式,参数,扩展运算符 另外还有关于严格模式和性能优化的变动,初学者暂时可以跳过这些,这里不做详细说明 这一章节的知识点非常重要,可能是ES6中最常用的知识点之一 正文 ES6中我们可以使用“箭头”(=>)定义函数。 var f = v => v 箭头左侧是参数,右侧是函数要执行的代码 如果要执行的代码只有一条语句,这条语句的运行结果就是函数的返

  • 函数 说明 输入 / 输出 pickling read_pickle(path[, compression]) 从文件中加载 pickled Pandas 对象 (或任何对象)。 表格 read_table(filepath_or_buffer[, sep, …]) 将通用分隔文件读入 DataFrame read_csv(filepath_or_buffer[, sep, …]) 将 CSV (