回答編集履歴
1
追記
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
(pandas 1.5.3, numexpr 2.8.4)
|
3
3
|
engine のデフォルトは、numexpr がインストールされている場合は numexpr を使って、インストールされていない場合は python になるはずです。
|
4
4
|
|
5
|
-
この例で、pandas と numexpr のそれぞれがどう動いているのか、ドキュメントを探ってもよくわかりませんでした。numexprが max と min を変数(カラム名)としてではなく、予約された関数名として扱っていて max != min → True としていそうな気がします。
|
5
|
+
この例で、pandas と numexpr のそれぞれがどう動いているのか、ドキュメントを探ってもよくわかりませんでした。numexpr が max と min を変数(カラム名)としてではなく、予約された関数名として扱っていて max != min → True としていそうな気がします。
|
6
6
|
対処法としては、下記のようになるのかと思います。
|
7
7
|
①maxとかminとかのカラム名を使わない
|
8
8
|
②queryを使わない (booleanインデックスを使う)
|
@@ -28,3 +28,13 @@
|
|
28
28
|
#2 c 3 5
|
29
29
|
```
|
30
30
|
|
31
|
+
### 追記
|
32
|
+
numexpr の evaluate に local_dict で渡しても、max を変数としては扱ってくれませんでした。
|
33
|
+
なので、numexpr の予約語扱いになっているものは、うまく扱えないんじゃないでしょうか。
|
34
|
+
(何が予約語扱いなのかが不明ですが・・・)
|
35
|
+
```python
|
36
|
+
import numexpr as ne
|
37
|
+
|
38
|
+
ne.evaluate('max', local_dict={'max': 1})
|
39
|
+
# TypeError: unsupported expression type: <class 'function'>
|
40
|
+
```
|