@@ -134,7 +134,9 @@ def __new__(cls, *args, **kwargs):
134134 cls = TimeGrouper
135135 return super ().__new__ (cls )
136136
137- def __init__ (self , key = None , level = None , freq = None , axis = 0 , sort = False ):
137+ def __init__ (
138+ self , key = None , level = None , freq = None , axis = 0 , sort = False , dropna = True
139+ ):
138140 self .key = key
139141 self .level = level
140142 self .freq = freq
@@ -146,6 +148,7 @@ def __init__(self, key=None, level=None, freq=None, axis=0, sort=False):
146148 self .indexer = None
147149 self .binner = None
148150 self ._grouper = None
151+ self .dropna = dropna
149152
150153 @property
151154 def ax (self ):
@@ -171,6 +174,7 @@ def _get_grouper(self, obj, validate: bool = True):
171174 level = self .level ,
172175 sort = self .sort ,
173176 validate = validate ,
177+ dropna = self .dropna ,
174178 )
175179 return self .binner , self .grouper , self .obj
176180
@@ -283,6 +287,7 @@ def __init__(
283287 sort : bool = True ,
284288 observed : bool = False ,
285289 in_axis : bool = False ,
290+ dropna : bool = True ,
286291 ):
287292 self .name = name
288293 self .level = level
@@ -293,6 +298,7 @@ def __init__(
293298 self .obj = obj
294299 self .observed = observed
295300 self .in_axis = in_axis
301+ self .dropna = dropna
296302
297303 # right place for this?
298304 if isinstance (grouper , (Series , Index )) and name is None :
@@ -446,7 +452,9 @@ def _make_codes(self) -> None:
446452 codes = self .grouper .codes_info
447453 uniques = self .grouper .result_index
448454 else :
449- codes , uniques = algorithms .factorize (self .grouper , sort = self .sort )
455+ codes , uniques = algorithms .factorize (
456+ self .grouper , sort = self .sort , dropna = self .dropna
457+ )
450458 uniques = Index (uniques , name = self .name )
451459 self ._codes = codes
452460 self ._group_index = uniques
@@ -465,6 +473,7 @@ def get_grouper(
465473 observed : bool = False ,
466474 mutated : bool = False ,
467475 validate : bool = True ,
476+ dropna : bool = True ,
468477) -> "Tuple[ops.BaseGrouper, List[Hashable], FrameOrSeries]" :
469478 """
470479 Create and return a BaseGrouper, which is an internal
@@ -655,6 +664,7 @@ def is_in_obj(gpr) -> bool:
655664 sort = sort ,
656665 observed = observed ,
657666 in_axis = in_axis ,
667+ dropna = dropna ,
658668 )
659669 if not isinstance (gpr , Grouping )
660670 else gpr
0 commit comments