Pandas:在某个特定项之后对数据框中接下来的5项求和



我有一个DataFrame,它看起来就像一个数字列表:

选项2

一种方法如下:

import pandas as pd
data = {'original': {0: 1, 1: -1, 2: 4, 3: -1, 4: 6, 5: 7, 6: 2, 7: 3, 8: 0}}
df = pd.DataFrame(data)
n = 3
df['option 1'] = (df['original'].rolling(n).sum()
.where(df['original'].shift(n).lt(0))
)

df['option 2'] = df['option 1'].shift(-n)
print(df)
original  option 1  option 2
0         1       NaN       NaN
1        -1       NaN       9.0
2         4       NaN       NaN
3        -1       NaN      15.0
4         6       9.0       NaN
5         7       NaN       NaN
6         2      15.0       NaN
7         3       NaN       NaN
8         0       NaN       NaN

  • 首先,使用Series.rolling创建用于应用sum的滚动窗口。
  • 接下来,链接Series.where并将cond参数设置为original列移位(shift)版本的值小于零(lt)的求值。
  • 对于option 2,我们只需在option 1上应用负移位。

最新更新