这是我的DataFrame:
import pandas as pd
df = pd.DataFrame({'a': [150, 106, 119, 131, 121, 140, 160, 119, 170]})
这是预期的输出.我想创建第b
列:
a b
0 150 140
1 106 160
2 119 160
3 131 161
4 121 NaN
5 140 NaN
6 160 NaN
7 119 NaN
8 170 NaN
我想要在滚动窗口6中获得最大值.但是,我想忽略每个窗口的第一个值.
在这张图片中,我展示了我想要的窗口.红色单元格是应该从计算中排除的单元格,绿色单元格是窗口的最大值,单位为b
.
我更喜欢一般的解决方案.例如,忽略每个窗口的前N个值后得到max()
.
以下是我的一些try ,但没有奏效:
# attempt 1
df['b'] = df.a.shift(-1).rolling(6).max()
# attempt 2
df['b'] = df.a.rolling(6, closed='left').max()
# attempt 3
for i in range(3):
x = df.iloc[i+1:i+6]