質問するログイン新規登録

回答編集履歴

2

結果を分かりやすくするためにwindowを2に変更

2021/01/25 14:49

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -18,13 +18,13 @@
18
18
  """
19
19
 
20
20
  df = pd.read_csv(io.StringIO(txt))
21
- print(df['high'].rolling(3).max().shift(-3))
21
+ print(df['high'].rolling(2).max().shift(-2)) # 次行から2つ分のデータの最大値
22
22
  ```
23
23
 
24
24
  ```result
25
- 0 3090.0
25
+ 0 3075.0
26
26
  1 3090.0
27
- 2 NaN
27
+ 2 3090.0
28
28
  3 NaN
29
29
  4 NaN
30
30
  Name: high, dtype: float64

1

「次行から数行」に対応

2021/01/25 14:49

投稿

Daregada
Daregada

スコア11990

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(-2))
21
+ print(df['high'].rolling(3).max().shift(-3))
20
22
  ```
21
23
 
22
24
  ```result
23
- 0 3075.0
25
+ 0 3090.0
24
26
  1 3090.0
25
- 2 3090.0
27
+ 2 NaN
26
28
  3 NaN
27
29
  4 NaN
28
30
  Name: high, dtype: float64