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

回答編集履歴

2

a or b の判定は、まずはaからのみなのでそのような記述に修正

2022/01/01 21:31

投稿

xail2222
xail2222

スコア1525

answer CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  Series同士の | の演算は、Seriesでは各要素同士の | の演算の結果をSeriesとして返すようにで定義されています。
9
9
 
10
- 対して、Series同士の or の演算では、a or b とした場合、まず aとb を boolに変換してチェックするようで、その際にSeriesで定義された
10
+ 対して、Series同士の or の演算では、a or b とした場合、まず aを boolに変換してチェックするようで、その際にSeriesで定義された
11
11
  ```__bool__```が呼び出されるようで、そこでエラーとなるようです。(```__bool__=__nonzero__```と定義されているので、ログに出るのは```__nonzero__```の方のようですが)
12
12
 
13
13
  実際に、エラーが出ていた```__nonzero__```の関数をreturn Trueを返すように修正すると
@@ -16,7 +16,7 @@
16
16
 
17
17
  結局、繰り返しになりますが
18
18
  | は、or は別物で、| に関しては、pandasのSeriesで実装されており要素同士の | の結果をSeriesとして返却してくれる
19
- or は、a or b とした場合それぞれを一旦boolに変換する処理が実行され、そのboolに変換する処理がpandasのSeriesで実装されているがエラーを返すだけの実装になっている。
19
+ or は、a or b とした場合まずaを一旦boolに変換する処理が実行され、そのboolに変換する処理がpandasのSeriesで実装されているがエラーを返すだけの実装になっている。
20
20
 
21
21
  という事のようです。
22
22
 

1

__が表示されていなかったので修正

2022/01/01 21:30

投稿

xail2222
xail2222

スコア1525

answer CHANGED
@@ -7,9 +7,10 @@
7
7
 
8
8
  Series同士の | の演算は、Seriesでは各要素同士の | の演算の結果をSeriesとして返すようにで定義されています。
9
9
 
10
+ 対して、Series同士の or の演算では、a or b とした場合、まず aとb を boolに変換してチェックするようで、その際にSeriesで定義された
10
- 対して、Series同士の or の演算では、a or b とした場合、まず aとb を boolに変換してチェックするようで、その際にSeriesで定義された__bool__が呼び出されるようで、そこでエラーとなるようです。(__bool__=__nonzero__と定義されているので、ログに出るのは__nonzero__の方のようですが)
11
+ ```__bool__```が呼び出されるようで、そこでエラーとなるようです。(```__bool__=__nonzero__```と定義されているので、ログに出るのは```__nonzero__```の方のようですが)
11
12
 
12
- 実際に、エラーが出ていた__nonzero__の関数をreturn Trueを返すように修正すると
13
+ 実際に、エラーが出ていた```__nonzero__```の関数をreturn Trueを返すように修正すると
13
14
  (order_data['status']==1) or (order_data['status']==2)
14
15
  は処理が可能になり(order_data['status']==1)がTrueと判定される為、(order_data['status']==1)が取得されます。
15
16