@@ -216,11 +216,8 @@ def apply(
216
216
217
217
NumbaExecutionEngine .check_numba_support (func )
218
218
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 ))
224
221
225
222
# check for data typing
226
223
if not isinstance (data , np .ndarray ):
@@ -230,7 +227,7 @@ def apply(
230
227
engine_kwargs = extract_numba_options (decorator )
231
228
232
229
NumbaExecutionEngine .validate_values_for_numba_raw_false (
233
- data , get_jit_arguments (engine_kwargs )
230
+ data , ** get_jit_arguments (engine_kwargs )
234
231
)
235
232
236
233
return NumbaExecutionEngine .apply_raw_false (
@@ -288,9 +285,29 @@ def apply_raw_false(
288
285
Series ,
289
286
)
290
287
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
293
291
)
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 ))
294
311
295
312
if results :
296
313
sample = next (iter (results .values ()))
@@ -306,11 +323,14 @@ def apply_raw_false(
306
323
307
324
@staticmethod
308
325
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 ,
310
330
) -> None :
311
331
from pandas import Series
312
332
313
- if engine_kwargs . get ( " parallel" , False ) :
333
+ if parallel :
314
334
raise NotImplementedError (
315
335
"Parallel apply is not supported when raw=False and engine='numba'"
316
336
)
@@ -376,34 +396,6 @@ def numba_func(values, col_names_index, index, *args):
376
396
377
397
return numba_func
378
398
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
-
407
399
408
400
def frame_apply (
409
401
obj : DataFrame ,
0 commit comments