标签: rolling-sum

Python - GroupBy对象的滚动函数

我有一个grouped类型的时间序列对象<pandas.core.groupby.SeriesGroupBy object at 0x03F1A9F0>.grouped.sum()给出了期望的结果,但我无法使用rolling_sum来处理groupby对象.有没有办法将滚动功能应用于groupby对象?例如:

x = range(0, 6)
id = ['a', 'a', 'a', 'b', 'b', 'b']
df = DataFrame(zip(id, x), columns = ['id', 'x'])
df.groupby('id').sum()
id    x
a    3
b   12
Run Code Online (Sandbox Code Playgroud)

但是,我希望有类似的东西:

  id  x
0  a  0
1  a  1
2  a  3
3  b  3
4  b  7
5  b  12
Run Code Online (Sandbox Code Playgroud)

python pandas rolling-computation rolling-sum pandas-groupby

40
推荐指数
3
解决办法
4万
查看次数

使用时间序列时,在熊猫滚动中使用center

我想在pandas滚动功能中设置center = True,对于时间序列:

import pandas as pd
series = pd.Series(1, index = pd.date_range('2014-01-01', '2014-04-01', freq = 'D'))
series.rolling('7D', min_periods=1, center=True, closed='left')
Run Code Online (Sandbox Code Playgroud)

但输出是:

---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-6-6b30c16a2d12> in <module>()
      1 import pandas as pd
      2 series = pd.Series(1, index = pd.date_range('2014-01-01', '2014-04-01', freq = 'D'))
----> 3 series.rolling('7D', min_periods=1, center=True, closed='left')

~\Anaconda3\lib\site-packages\pandas\core\generic.py in rolling(self, window, min_periods, freq, center, win_type, on, axis, closed)
   6193                                    min_periods=min_periods, freq=freq,
   6194                                    center=center, win_type=win_type,
-> 6195                                    on=on, axis=axis, closed=closed)
   6196 
   6197         cls.rolling = …
Run Code Online (Sandbox Code Playgroud)

python time-series pandas rolling-sum

8
推荐指数
2
解决办法
2561
查看次数

pandas 数据帧中前 N 行的条件均值和总和

令人担忧的是这个示例性的熊猫数据框:

      Measurement  Trigger  Valid
   0          2.0    False   True
   1          4.0    False   True
   2          3.0    False   True
   3          0.0     True  False
   4        100.0    False   True
   5          3.0    False   True
   6          2.0    False   True
   7          1.0     True   True
Run Code Online (Sandbox Code Playgroud)

只要TriggerTrue的,我希望计算金额和最后3(从当前开始)有效测量的意思。如果列Valid是,则测量被认为是有效的True。因此,让我们使用上述数据框中的两个示例进行澄清:

  1. Index 3:2,1,0应该使用指数。预期的Sum = 9.0, Mean = 3.0
  2. Index 7:7,6,5应该使用指数。预期的Sum = 6.0, Mean = 2.0

我曾尝试pandas.rolling创建新的、移动的列,但没有成功。请参阅我的测试中的以下摘录(应直接运行):

import unittest
import pandas as pd
import numpy as np …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas rolling-computation rolling-sum

7
推荐指数
1
解决办法
6138
查看次数

大熊猫如何做前滚?

我有这个数据帧:

dates = pd.date_range(start='2016-01-01', periods=20, freq='d')
df = pd.DataFrame({'A': [1] * 20 + [2] * 12 + [3] * 8,
                   'B': np.concatenate((dates, dates)),
                   'C': np.arange(40)})
Run Code Online (Sandbox Code Playgroud)

我按日期对数据框进行了排序:

df.sort_values('B',inplace=True)
Run Code Online (Sandbox Code Playgroud)

我期待在日期做一个前滚.但是,我只能使用以下方式进行后滚:

df.groupby('A').rolling(7, on='B',min_periods=0).C.sum()

A  B         
1  2016-01-01      0.0
   2016-01-02      1.0
   2016-01-03      3.0
   2016-01-04      6.0
   2016-01-05     10.0
   2016-01-06     15.0
Run Code Online (Sandbox Code Playgroud)

我想做前滚.

python pandas rolling-sum

7
推荐指数
3
解决办法
4324
查看次数

Scala:使用固定窗口计算列表的移动总和

我是 Scala 的新手,我想用列表的固定窗口计算移动总和。

例如:给定列表值 (1.0, 2.0, 3.0, 6.0, 7.0, 8.0, 12.0, 9.0, 4.0, 1.0) 和句点 4,函数应该返回: (1.0, 3.0, 6.0, 12.0, 18.0, 24.0, 33.0, 36.0, 33.0, 26.0)

如果 list.size < period 则只返回累积总和。

我做了一些尝试

def mavg(values: List[Double], period: Int): List[Double] = {
  if (values.size <= period) (values.sum ) :: List.fill(period -1)(values.sum ) else {
      val rest: List[Double] = mavg(values.tail, period)
      (rest.head + ((values.head - values(period)))):: rest
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,我得到了

List(12.0, 18.0, 24.0, 33.0, 36.0, 33.0, 26.0, 26.0, 26.0, 26.0
Run Code Online (Sandbox Code Playgroud)

这是不正确的。我不想使用 Pyspark 来获得结果。有人可以帮忙吗? …

scala sum list rolling-sum

7
推荐指数
2
解决办法
463
查看次数

Pandas groupby:计算每个组在一个时间范围内出现的次数

我有一个数据帧:

ID  DATE       WIN
A   2015/6/5   Yes
A   2015/6/7   Yes
A   2015/6/7   Yes
A   2015/6/7   Yes
B   2015/6/8   No
B   2015/8/7   Yes
C   2015/5/15  Yes
C   2015/5/30  No
C   2015/7/30  No
C   2015/8/03  Yes
Run Code Online (Sandbox Code Playgroud)

我想添加一个列,计算ID过去1个月内每个胜利的数量,结果如下:

ID  DATE       WIN  NumOfDaysSinceLastWin NumOfWinsInThePast30days
A   2015/6/5   Yes           0               0       
A   2015/6/7   Yes           2               1 
A   2015/6/7   Yes           2               1 or (A 2015/6/7 Yes 0 2)
A   2015/6/8   No            1               3 
B   2015/8/7   No            0               0
B   2015/8/7   Yes           0               0
C   2015/5/15 …
Run Code Online (Sandbox Code Playgroud)

python group-by date-difference pandas rolling-sum

5
推荐指数
1
解决办法
1935
查看次数

在dplyr的滚动总和

set.seed(123)

df <- data.frame(x = sample(1:10, 20, replace = T), id = rep(1:2, each = 10))
Run Code Online (Sandbox Code Playgroud)

对于每个id,我想创建一个具有前5个x值之和的列.

df %>% group_by(id) %>% mutate(roll.sum = c(x[1:4], zoo::rollapply(x, 5, sum)))
# Groups:   id [2]
  x    id roll.sum
<int> <int>    <int>
 3     1        3
 8     1        8
 5     1        5
 9     1        9
10     1       10
 1     1       36
 6     1       39
 9     1       40
 6     1       41
 5     1       37
10     2       10
 5     2        5
 7     2        7 …
Run Code Online (Sandbox Code Playgroud)

r dplyr rolling-sum

3
推荐指数
2
解决办法
802
查看次数

从pandas数据框列值的两侧添加n个值

我有一个这样的数据框,

df
col1    col2
  A       1
  B       3
  C       2
  D       5
  E       6
  F       8
  G       10
Run Code Online (Sandbox Code Playgroud)

我想添加 col2 的特定值的上一个和下一个 n 值并将其存储到一个新列中,

所以,如果 n=2,那么数据框应该是这样的,

 col1    col2    col3
  A       1       6  (only below 2 values are there no upper values, so adding 3 numbers)
  B       3      11 (adding one prev, current and next two)
  C       2      17(adding all 4 values)
  D       5      24(same as above)
  E       6      31(same as above)
  F       8      29(adding two prev and next one as only …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas rolling-sum

2
推荐指数
1
解决办法
53
查看次数