@@ -169,7 +169,7 @@ def apply(self, f, data: FrameOrSeries, axis: int = 0):
169
169
and not sdata .index ._has_complex_internals
170
170
):
171
171
try :
172
- result_values , mutated = splitter .fast_apply (f , group_keys )
172
+ result_values , mutated = splitter .fast_apply (f , sdata , group_keys )
173
173
174
174
except libreduction .InvalidApply as err :
175
175
# This Exception is raised if `f` triggers an exception
@@ -925,11 +925,9 @@ def _chop(self, sdata: Series, slice_obj: slice) -> Series:
925
925
926
926
927
927
class FrameSplitter (DataSplitter ):
928
- def fast_apply (self , f , names ):
928
+ def fast_apply (self , f , sdata : FrameOrSeries , names ):
929
929
# must return keys::list, values::list, mutated::bool
930
930
starts , ends = lib .generate_slices (self .slabels , self .ngroups )
931
-
932
- sdata = self ._get_sorted_data ()
933
931
return libreduction .apply_frame_axis0 (sdata , f , names , starts , ends )
934
932
935
933
def _chop (self , sdata : DataFrame , slice_obj : slice ) -> DataFrame :
@@ -939,11 +937,13 @@ def _chop(self, sdata: DataFrame, slice_obj: slice) -> DataFrame:
939
937
return sdata .iloc [:, slice_obj ]
940
938
941
939
942
- def get_splitter (data : FrameOrSeries , * args , ** kwargs ) -> DataSplitter :
940
+ def get_splitter (
941
+ data : FrameOrSeries , labels : np .ndarray , ngroups : int , axis : int = 0
942
+ ) -> DataSplitter :
943
943
if isinstance (data , Series ):
944
944
klass : Type [DataSplitter ] = SeriesSplitter
945
945
else :
946
946
# i.e. DataFrame
947
947
klass = FrameSplitter
948
948
949
- return klass (data , * args , ** kwargs )
949
+ return klass (data , labels , ngroups , axis )
0 commit comments