@@ -216,11 +216,8 @@ def apply(
216216
217217 NumbaExecutionEngine .check_numba_support (func )
218218
219- # normalize axis values
220- if axis in (0 , "index" ):
221- axis = 0
222- else :
223- axis = 1
219+ if not isinstance (data , np .ndarray ):
220+ axis = data ._get_axis_number (cast (Axis , axis ))
224221
225222 # check for data typing
226223 if not isinstance (data , np .ndarray ):
@@ -230,7 +227,7 @@ def apply(
230227 engine_kwargs = extract_numba_options (decorator )
231228
232229 NumbaExecutionEngine .validate_values_for_numba_raw_false (
233- data , get_jit_arguments (engine_kwargs )
230+ data , ** get_jit_arguments (engine_kwargs )
234231 )
235232
236233 return NumbaExecutionEngine .apply_raw_false (
@@ -288,9 +285,29 @@ def apply_raw_false(
288285 Series ,
289286 )
290287
291- results = NumbaExecutionEngine .apply_with_numba (
292- data , func , args , kwargs , decorator , axis
288+ func = cast (Callable , func )
289+ args , kwargs = prepare_function_arguments (
290+ func , args , kwargs , num_required_args = 1
293291 )
292+ nb_func = NumbaExecutionEngine .generate_numba_apply_func (func , axis , decorator )
293+
294+ from pandas .core ._numba .extensions import set_numba_data
295+
296+ # Convert from numba dict to regular dict
297+ # Our isinstance checks in the df constructor don't pass for numbas typed dict
298+
299+ if axis == 0 :
300+ col_names_index = data .index
301+ result_index = data .columns
302+ else :
303+ col_names_index = data .columns
304+ result_index = data .index
305+
306+ with (
307+ set_numba_data (result_index ) as index ,
308+ set_numba_data (col_names_index ) as columns ,
309+ ):
310+ results = dict (nb_func (data .values , columns , index , * args ))
294311
295312 if results :
296313 sample = next (iter (results .values ()))
@@ -306,11 +323,14 @@ def apply_raw_false(
306323
307324 @staticmethod
308325 def validate_values_for_numba_raw_false (
309- data : Series | DataFrame , engine_kwargs : dict [str , bool ]
326+ data : Series | DataFrame ,
327+ nopython : bool | None = None ,
328+ nogil : bool | None = None ,
329+ parallel : bool | None = None ,
310330 ) -> None :
311331 from pandas import Series
312332
313- if engine_kwargs . get ( " parallel" , False ) :
333+ if parallel :
314334 raise NotImplementedError (
315335 "Parallel apply is not supported when raw=False and engine='numba'"
316336 )
@@ -376,34 +396,6 @@ def numba_func(values, col_names_index, index, *args):
376396
377397 return numba_func
378398
379- @staticmethod
380- def apply_with_numba (data , func , args , kwargs , decorator , axis = 0 ) -> dict [int , Any ]:
381- func = cast (Callable , func )
382- args , kwargs = prepare_function_arguments (
383- func , args , kwargs , num_required_args = 1
384- )
385- nb_func = NumbaExecutionEngine .generate_numba_apply_func (func , axis , decorator )
386-
387- from pandas .core ._numba .extensions import set_numba_data
388-
389- # Convert from numba dict to regular dict
390- # Our isinstance checks in the df constructor don't pass for numbas typed dict
391-
392- if axis == 0 or axis == "index" :
393- col_names_index = data .index
394- result_index = data .columns
395- else :
396- col_names_index = data .columns
397- result_index = data .index
398-
399- with (
400- set_numba_data (result_index ) as index ,
401- set_numba_data (col_names_index ) as columns ,
402- ):
403- res = dict (nb_func (data .values , columns , index , * args ))
404-
405- return res
406-
407399
408400def frame_apply (
409401 obj : DataFrame ,
0 commit comments