@@ -188,6 +188,39 @@ def test_eval_object_dtype_binop(self):
188188 expected = DataFrame ({"a1" : ["Y" , "N" ], "c" : [True , False ]})
189189 tm .assert_frame_equal (res , expected )
190190
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+
191224
192225class TestDataFrameQueryWithMultiIndex :
193226 def test_query_with_named_multiindex (self , parser , engine ):
0 commit comments