回答編集履歴
2
結果を分かりやすくするためにwindowを2に変更
test
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
df = pd.read_csv(io.StringIO(txt))
|
40
40
|
|
41
|
-
print(df['high'].rolling(
|
41
|
+
print(df['high'].rolling(2).max().shift(-2)) # 次行から2つ分のデータの最大値
|
42
42
|
|
43
43
|
```
|
44
44
|
|
@@ -46,11 +46,11 @@
|
|
46
46
|
|
47
47
|
```result
|
48
48
|
|
49
|
-
0 30
|
49
|
+
0 3075.0
|
50
50
|
|
51
51
|
1 3090.0
|
52
52
|
|
53
|
-
2
|
53
|
+
2 3090.0
|
54
54
|
|
55
55
|
3 NaN
|
56
56
|
|
1
「次行から数行」に対応
test
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
普通に`window=t`を指定して、`max`で最大値を求めてから、`shift(-t + 1)`すればいい。
|
2
|
+
|
3
|
+
訂正: 現在行のデータを含まず、次行からというのであれば、さらに1行ずらして`shift(-t)`すればいい。
|
4
|
+
|
5
|
+
|
2
6
|
|
3
7
|
ネタ元は、[python - How to Reverse Rolling Sum? - Stack Overflow](https://stackoverflow.com/questions/43101652/how-to-reverse-rolling-sum) より。
|
4
8
|
|
@@ -34,7 +38,7 @@
|
|
34
38
|
|
35
39
|
df = pd.read_csv(io.StringIO(txt))
|
36
40
|
|
37
|
-
print(df['high'].rolling(3).max().shift(-
|
41
|
+
print(df['high'].rolling(3).max().shift(-3))
|
38
42
|
|
39
43
|
```
|
40
44
|
|
@@ -42,11 +46,11 @@
|
|
42
46
|
|
43
47
|
```result
|
44
48
|
|
45
|
-
0 30
|
49
|
+
0 3090.0
|
46
50
|
|
47
51
|
1 3090.0
|
48
52
|
|
49
|
-
2
|
53
|
+
2 NaN
|
50
54
|
|
51
55
|
3 NaN
|
52
56
|
|