回答編集履歴
2
結果を分かりやすくするためにwindowを2に変更
answer
CHANGED
@@ -18,13 +18,13 @@
|
|
18
18
|
"""
|
19
19
|
|
20
20
|
df = pd.read_csv(io.StringIO(txt))
|
21
|
-
print(df['high'].rolling(
|
21
|
+
print(df['high'].rolling(2).max().shift(-2)) # 次行から2つ分のデータの最大値
|
22
22
|
```
|
23
23
|
|
24
24
|
```result
|
25
|
-
0
|
25
|
+
0 3075.0
|
26
26
|
1 3090.0
|
27
|
-
2
|
27
|
+
2 3090.0
|
28
28
|
3 NaN
|
29
29
|
4 NaN
|
30
30
|
Name: high, dtype: float64
|
1
「次行から数行」に対応
answer
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
普通に`window=t`を指定して、`max`で最大値を求めてから、`shift(-t + 1)`すればいい。
|
2
|
+
訂正: 現在行のデータを含まず、次行からというのであれば、さらに1行ずらして`shift(-t)`すればいい。
|
3
|
+
|
2
4
|
ネタ元は、[python - How to Reverse Rolling Sum? - Stack Overflow](https://stackoverflow.com/questions/43101652/how-to-reverse-rolling-sum) より。
|
3
5
|
|
4
6
|
|
@@ -16,13 +18,13 @@
|
|
16
18
|
"""
|
17
19
|
|
18
20
|
df = pd.read_csv(io.StringIO(txt))
|
19
|
-
print(df['high'].rolling(3).max().shift(-
|
21
|
+
print(df['high'].rolling(3).max().shift(-3))
|
20
22
|
```
|
21
23
|
|
22
24
|
```result
|
23
|
-
0
|
25
|
+
0 3090.0
|
24
26
|
1 3090.0
|
25
|
-
2
|
27
|
+
2 NaN
|
26
28
|
3 NaN
|
27
29
|
4 NaN
|
28
30
|
Name: high, dtype: float64
|