Skip to content

Commit dc1c97c

Browse files
authored
REF: Resampler.groupby -> _timegrouper (#51135)
REF: Resample.groupby -> _timegrouper
1 parent 385a667 commit dc1c97c

File tree

1 file changed

+22
-19
lines changed

1 file changed

+22
-19
lines changed

pandas/core/resample.py

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ class Resampler(BaseGroupBy, PandasObject):
127127
"""
128128

129129
grouper: BinGrouper
130+
_timegrouper: TimeGrouper
130131
exclusions: frozenset[Hashable] = frozenset() # for SelectionMixin compat
131132

132133
# to the groupby descriptor
@@ -152,7 +153,7 @@ def __init__(
152153
selection=None,
153154
**kwargs,
154155
) -> None:
155-
self.groupby = groupby
156+
self._timegrouper = groupby
156157
self.keys = None
157158
self.sort = True
158159
# error: Incompatible types in assignment (expression has type "Union
@@ -162,11 +163,11 @@ def __init__(
162163
self.group_keys = group_keys
163164
self.as_index = True
164165

165-
self.groupby._set_grouper(self._convert_obj(obj), sort=True)
166+
self._timegrouper._set_grouper(self._convert_obj(obj), sort=True)
166167
self.binner, self.grouper = self._get_binner()
167168
self._selection = selection
168-
if self.groupby.key is not None:
169-
self.exclusions = frozenset([self.groupby.key])
169+
if self._timegrouper.key is not None:
170+
self.exclusions = frozenset([self._timegrouper.key])
170171
else:
171172
self.exclusions = frozenset()
172173

@@ -187,17 +188,17 @@ def __str__(self) -> str:
187188
Provide a nice str repr of our rolling object.
188189
"""
189190
attrs = (
190-
f"{k}={getattr(self.groupby, k)}"
191+
f"{k}={getattr(self._timegrouper, k)}"
191192
for k in self._attributes
192-
if getattr(self.groupby, k, None) is not None
193+
if getattr(self._timegrouper, k, None) is not None
193194
)
194195
return f"{type(self).__name__} [{', '.join(attrs)}]"
195196

196197
def __getattr__(self, attr: str):
197198
if attr in self._internal_names_set:
198199
return object.__getattribute__(self, attr)
199200
if attr in self._attributes:
200-
return getattr(self.groupby, attr)
201+
return getattr(self._timegrouper, attr)
201202
if attr in self.obj:
202203
return self[attr]
203204

@@ -208,13 +209,13 @@ def __getattr__(self, attr: str):
208209
def obj(self) -> NDFrame: # type: ignore[override]
209210
# error: Incompatible return value type (got "Optional[Any]",
210211
# expected "NDFrameT")
211-
return self.groupby.obj # type: ignore[return-value]
212+
return self._timegrouper.obj # type: ignore[return-value]
212213

213214
@property
214215
def ax(self):
215216
# we can infer that this is a PeriodIndex/DatetimeIndex/TimedeltaIndex,
216217
# but skipping annotating bc the overrides overwhelming
217-
return self.groupby.ax
218+
return self._timegrouper.ax
218219

219220
@property
220221
def _from_selection(self) -> bool:
@@ -223,8 +224,8 @@ def _from_selection(self) -> bool:
223224
"""
224225
# upsampling and PeriodIndex resampling do not work
225226
# with selection, this state used to catch and raise an error
226-
return self.groupby is not None and (
227-
self.groupby.key is not None or self.groupby.level is not None
227+
return self._timegrouper is not None and (
228+
self._timegrouper.key is not None or self._timegrouper.level is not None
228229
)
229230

230231
def _convert_obj(self, obj: NDFrameT) -> NDFrameT:
@@ -252,7 +253,7 @@ def _get_binner(self):
252253
"""
253254
binner, bins, binlabels = self._get_binner_for_time()
254255
assert len(bins) == len(binlabels)
255-
bin_grouper = BinGrouper(bins, binlabels, indexer=self.groupby.indexer)
256+
bin_grouper = BinGrouper(bins, binlabels, indexer=self._timegrouper.indexer)
256257
return binner, bin_grouper
257258

258259
@Substitution(
@@ -391,7 +392,9 @@ def transform(self, arg, *args, **kwargs):
391392
2018-01-01 01:00:00 NaN
392393
Freq: H, dtype: float64
393394
"""
394-
return self._selected_obj.groupby(self.groupby).transform(arg, *args, **kwargs)
395+
return self._selected_obj.groupby(self._timegrouper).transform(
396+
arg, *args, **kwargs
397+
)
395398

396399
def _downsample(self, f, **kwargs):
397400
raise AbstractMethodError(self)
@@ -1168,7 +1171,7 @@ def __init__(self, obj, parent=None, groupby=None, key=None, **kwargs) -> None:
11681171
self.key = key
11691172

11701173
self._groupby = groupby
1171-
self.groupby = copy.copy(parent.groupby)
1174+
self._timegrouper = copy.copy(parent._timegrouper)
11721175

11731176
@no_type_check
11741177
def _apply(self, f, *args, **kwargs):
@@ -1178,7 +1181,7 @@ def _apply(self, f, *args, **kwargs):
11781181
"""
11791182

11801183
def func(x):
1181-
x = self._shallow_copy(x, groupby=self.groupby)
1184+
x = self._shallow_copy(x, groupby=self._timegrouper)
11821185

11831186
if isinstance(f, str):
11841187
return getattr(x, f)(**kwargs)
@@ -1243,8 +1246,8 @@ def _get_binner_for_time(self):
12431246

12441247
# this is how we are actually creating the bins
12451248
if self.kind == "period":
1246-
return self.groupby._get_time_period_bins(self.ax)
1247-
return self.groupby._get_time_bins(self.ax)
1249+
return self._timegrouper._get_time_period_bins(self.ax)
1250+
return self._timegrouper._get_time_bins(self.ax)
12481251

12491252
def _downsample(self, how, **kwargs):
12501253
"""
@@ -1373,7 +1376,7 @@ def _resampler_for_grouping(self):
13731376
def _get_binner_for_time(self):
13741377
if self.kind == "timestamp":
13751378
return super()._get_binner_for_time()
1376-
return self.groupby._get_period_bins(self.ax)
1379+
return self._timegrouper._get_period_bins(self.ax)
13771380

13781381
def _convert_obj(self, obj: NDFrameT) -> NDFrameT:
13791382
obj = super()._convert_obj(obj)
@@ -1483,7 +1486,7 @@ def _resampler_for_grouping(self):
14831486
return TimedeltaIndexResamplerGroupby
14841487

14851488
def _get_binner_for_time(self):
1486-
return self.groupby._get_time_delta_bins(self.ax)
1489+
return self._timegrouper._get_time_delta_bins(self.ax)
14871490

14881491
def _adjust_binner_for_upsample(self, binner):
14891492
"""

0 commit comments

Comments
 (0)