質問編集履歴

2

内容の具体性見直し

2022/04/19 11:43

投稿

morimori_4
morimori_4

スコア22

test CHANGED
File without changes
test CHANGED
@@ -2,10 +2,36 @@
2
2
 
3
3
  Python Pandasで時系列データの処理をしています。
4
4
  データフレームから1つずつデータを抽出して名前短縮してストックするためwhileでループしています。
5
- 1つ前/2つ前のデータも呼び出したいので、ループ初期にデータがない状態となります。
6
- これをtry - exceptを使ってエラー回避して処理したいのですが、どのようにしたらよいでしょうか?
7
5
 
6
+ ループの中で1つ前/2つ前のデータも呼び出しているので、ループ初期(1本目、2本目)では1つ前/2つ前のデータが存在しない状態となります。これをエラーとせずに、exceptを使ってパスしたいのですが、うまくパスできません。
7
+ どのようにすれば、exceptを効かせることができるでしょうか?
8
+
9
+ どうぞよろしくお願いいたします。
10
+
11
+ ### やりたいこと
8
- 下のコードで i=0のとき [p0, c0] はストックできるが、 [p1, c1] [p2, c2] は i-1 i-2 番目のデータが存在ないめエラーになるが、これをエラーにせずに処理したです。
12
+ 下のコードで i=0のとき [p0, c0] はストックして、 [p1, c1] [p2, c2] パスしたい
13
+
14
+ i=0のとき
15
+ [p0, c0] = ・・・  処理する
16
+ [p1, c1] = ・・・  存在しないのでexceptでパス
17
+ [p2, c2] = ・・・  存在しないのでexceptでパス
18
+
19
+ i=1のとき
20
+ [p0, c0] = ・・・  処理する
21
+ [p1, c1] = ・・・  処理する
22
+ [p2, c2] = ・・・  存在しないのでexceptでパス
23
+
24
+ i=2のとき
25
+ [p0, c0] = ・・・  処理する
26
+ [p1, c1] = ・・・  処理する
27
+ [p2, c2] = ・・・  処理する
28
+
29
+ ※なお、if文を使って、ループ初期の場合分けをすればよいのでしょうが、実際のコードだと場合分けの数が多いため、可能であれば、try - exceptで場合分けをせずに処理できないかと考えています。
30
+
31
+ ### エラー
32
+ 現状のコードだと、except IndexError が効かずに
33
+ ValueError: -1 is not in range 
34
+ となってしまいます。
9
35
 
10
36
 
11
37
  ```Python
@@ -24,12 +50,9 @@
24
50
 
25
51
  except IndexError as e:
26
52
  print("リストの添字エラー")
27
-
28
- print("-----------")
53
+
29
- print([p0, c0])
30
- print([p1, c1])
31
- print([p2, c2])
32
-
33
54
  i += 1
34
55
  ```
35
56
 
57
+
58
+

1

誤字

2022/04/19 10:07

投稿

morimori_4
morimori_4

スコア22

test CHANGED
File without changes
test CHANGED
@@ -7,23 +7,12 @@
7
7
 
8
8
  ※下のコードで i=0のとき [p0, c0] はストックできるが、 [p1, c1] [p2, c2] は i-1 i-2 番目のデータが存在しないためエラーになるが、これをエラーにせずに処理したいです。
9
9
 
10
- ### 該当のソースコード
11
10
 
12
11
  ```Python
13
12
  import pandas as pd
14
13
  df = pd.DataFrame({'price': [350, 450, 500, 650, 700, 850 ],
15
14
  'cond': [False, True, False, False, False, True]})
16
- ```
17
15
 
18
- price cond
19
- 0 350 False
20
- 1 450 True
21
- 2 500 False
22
- 3 650 False
23
- 4 700 False
24
- 5 850 True
25
-
26
- ```Python
27
16
  i = 0
28
17
  while i < len(df):
29
18