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

回答編集履歴

1

補足

2022/01/01 16:10

投稿

otn
otn

スコア86349

answer CHANGED
@@ -3,6 +3,8 @@
3
3
  `or`とのタイプミスだと思いますが、
4
4
  `or`と`|`は全然違います。`|`は二項演算子で、その扱うデータのクラスで`__or__`というメソッド名で定義された処理をします。pandasをお使いだと思いますが、pandasのクラスで`__or__`は定義されています。データフレームの要素を個別に`|`して、結果をデータフレームとして返すように定義されているようです。
5
5
 
6
- `or`は制御構造で、左項を評価して論理値に変換して`True`なら(返還前の)左項を結果とし(右項は評価しない)、`False`なら右項を評価してそれを結果とします。
6
+ `or`は制御構造で、左項を評価して真偽値に変換して`True`なら(返還前の)左項を結果とし(右項は評価しない)、`False`なら右項を評価してそれを結果とします。
7
7
 
8
+ そのエラーは、データフレームが単一の真偽値に変換できないというエラーです。「複数の値からどうやって単一の真偽値に変換するか」を明示する必要があります。変換したとしてもそれはデータフレームじゃないので、`|`の結果と同じにはなりません。
9
+
8
- 左項と右項が両方とも(副作用の無い)論理値の時は`or`と`|`は同じですかね。
10
+ 左項と右項が両方とも(副作用の無い)真偽値の時は`or`と`|`は同じですかね。