@@ -188,6 +188,39 @@ def test_eval_object_dtype_binop(self):
188
188
expected = DataFrame ({"a1" : ["Y" , "N" ], "c" : [True , False ]})
189
189
tm .assert_frame_equal (res , expected )
190
190
191
+ def test_using_numpy (self , engine , parser ):
192
+ # GH 58041
193
+ skip_if_no_pandas_parser (parser )
194
+ df = Series ([0.2 , 1.5 , 2.8 ], name = "a" ).to_frame ()
195
+ res = df .eval ("@np.floor(a)" , engine = engine , parser = parser )
196
+ expected = np .floor (df ["a" ])
197
+ tm .assert_series_equal (expected , res )
198
+
199
+ def test_eval_simple (self , engine , parser ):
200
+ df = Series ([0.2 , 1.5 , 2.8 ], name = "a" ).to_frame ()
201
+ res = df .eval ("a" , engine = engine , parser = parser )
202
+ expected = df ["a" ]
203
+ tm .assert_series_equal (expected , res )
204
+
205
+ def test_extension_array_eval (self , engine , parser , request ):
206
+ # GH#58748
207
+ if engine == "numexpr" :
208
+ mark = pytest .mark .xfail (
209
+ reason = "numexpr does not support extension array dtypes"
210
+ )
211
+ request .applymarker (mark )
212
+ df = DataFrame ({"a" : pd .array ([1 , 2 , 3 ]), "b" : pd .array ([4 , 5 , 6 ])})
213
+ result = df .eval ("a / b" , engine = engine , parser = parser )
214
+ expected = Series (pd .array ([0.25 , 0.40 , 0.50 ]))
215
+ tm .assert_series_equal (result , expected )
216
+
217
+ def test_complex_eval (self , engine , parser ):
218
+ # GH#21374
219
+ df = DataFrame ({"a" : [1 + 2j ], "b" : [1 + 1j ]})
220
+ result = df .eval ("a/b" , engine = engine , parser = parser )
221
+ expected = Series ([1.5 + 0.5j ])
222
+ tm .assert_series_equal (result , expected )
223
+
191
224
192
225
class TestDataFrameQueryWithMultiIndex :
193
226
def test_query_with_named_multiindex (self , parser , engine ):
0 commit comments