65
65
VariableWindowIndexer ,
66
66
)
67
67
from pandas .core .window .numba_ import (
68
+ generate_manual_numpy_nan_agg_with_axis ,
68
69
generate_numba_apply_func ,
69
70
generate_numba_table_func ,
70
71
)
@@ -1378,16 +1379,15 @@ def sum(self, *args, engine=None, engine_kwargs=None, **kwargs):
1378
1379
nv .validate_window_func ("sum" , args , kwargs )
1379
1380
if maybe_use_numba (engine ):
1380
1381
if self .method == "table" :
1381
- raise NotImplementedError ( "method='table' is not supported." )
1382
- # Once numba supports np.nansum with axis, args will be relevant.
1383
- # https://github.com/numba/numba/issues/6610
1384
- args = () if self . method == "single" else ( 0 ,)
1382
+ func = generate_manual_numpy_nan_agg_with_axis ( np . nansum )
1383
+ else :
1384
+ func = np . nansum
1385
+
1385
1386
return self .apply (
1386
- np . nansum ,
1387
+ func ,
1387
1388
raw = True ,
1388
1389
engine = engine ,
1389
1390
engine_kwargs = engine_kwargs ,
1390
- args = args ,
1391
1391
)
1392
1392
window_func = window_aggregations .roll_sum
1393
1393
return self ._apply (window_func , name = "sum" , ** kwargs )
@@ -1424,16 +1424,15 @@ def max(self, *args, engine=None, engine_kwargs=None, **kwargs):
1424
1424
nv .validate_window_func ("max" , args , kwargs )
1425
1425
if maybe_use_numba (engine ):
1426
1426
if self .method == "table" :
1427
- raise NotImplementedError ( "method='table' is not supported." )
1428
- # Once numba supports np.nanmax with axis, args will be relevant.
1429
- # https://github.com/numba/numba/issues/6610
1430
- args = () if self . method == "single" else ( 0 ,)
1427
+ func = generate_manual_numpy_nan_agg_with_axis ( np . nanmax )
1428
+ else :
1429
+ func = np . nanmax
1430
+
1431
1431
return self .apply (
1432
- np . nanmax ,
1432
+ func ,
1433
1433
raw = True ,
1434
1434
engine = engine ,
1435
1435
engine_kwargs = engine_kwargs ,
1436
- args = args ,
1437
1436
)
1438
1437
window_func = window_aggregations .roll_max
1439
1438
return self ._apply (window_func , name = "max" , ** kwargs )
@@ -1496,16 +1495,15 @@ def min(self, *args, engine=None, engine_kwargs=None, **kwargs):
1496
1495
nv .validate_window_func ("min" , args , kwargs )
1497
1496
if maybe_use_numba (engine ):
1498
1497
if self .method == "table" :
1499
- raise NotImplementedError ( "method='table' is not supported." )
1500
- # Once numba supports np.nanmin with axis, args will be relevant.
1501
- # https://github.com/numba/numba/issues/6610
1502
- args = () if self . method == "single" else ( 0 ,)
1498
+ func = generate_manual_numpy_nan_agg_with_axis ( np . nanmin )
1499
+ else :
1500
+ func = np . nanmin
1501
+
1503
1502
return self .apply (
1504
- np . nanmin ,
1503
+ func ,
1505
1504
raw = True ,
1506
1505
engine = engine ,
1507
1506
engine_kwargs = engine_kwargs ,
1508
- args = args ,
1509
1507
)
1510
1508
window_func = window_aggregations .roll_min
1511
1509
return self ._apply (window_func , name = "min" , ** kwargs )
@@ -1514,16 +1512,15 @@ def mean(self, *args, engine=None, engine_kwargs=None, **kwargs):
1514
1512
nv .validate_window_func ("mean" , args , kwargs )
1515
1513
if maybe_use_numba (engine ):
1516
1514
if self .method == "table" :
1517
- raise NotImplementedError ( "method='table' is not supported." )
1518
- # Once numba supports np.nanmean with axis, args will be relevant.
1519
- # https://github.com/numba/numba/issues/6610
1520
- args = () if self . method == "single" else ( 0 ,)
1515
+ func = generate_manual_numpy_nan_agg_with_axis ( np . nanmean )
1516
+ else :
1517
+ func = np . nanmean
1518
+
1521
1519
return self .apply (
1522
- np . nanmean ,
1520
+ func ,
1523
1521
raw = True ,
1524
1522
engine = engine ,
1525
1523
engine_kwargs = engine_kwargs ,
1526
- args = args ,
1527
1524
)
1528
1525
window_func = window_aggregations .roll_mean
1529
1526
return self ._apply (window_func , name = "mean" , ** kwargs )
@@ -1584,16 +1581,15 @@ def mean(self, *args, engine=None, engine_kwargs=None, **kwargs):
1584
1581
def median (self , engine = None , engine_kwargs = None , ** kwargs ):
1585
1582
if maybe_use_numba (engine ):
1586
1583
if self .method == "table" :
1587
- raise NotImplementedError ( "method='table' is not supported." )
1588
- # Once numba supports np.nanmedian with axis, args will be relevant.
1589
- # https://github.com/numba/numba/issues/6610
1590
- args = () if self . method == "single" else ( 0 ,)
1584
+ func = generate_manual_numpy_nan_agg_with_axis ( np . nanmedian )
1585
+ else :
1586
+ func = np . nanmedian
1587
+
1591
1588
return self .apply (
1592
- np . nanmedian ,
1589
+ func ,
1593
1590
raw = True ,
1594
1591
engine = engine ,
1595
1592
engine_kwargs = engine_kwargs ,
1596
- args = args ,
1597
1593
)
1598
1594
window_func = window_aggregations .roll_median_c
1599
1595
return self ._apply (window_func , name = "median" , ** kwargs )
0 commit comments