@@ -26,7 +26,7 @@ class TimeGrouper(CustomGrouper):
26
26
closed : closed end of interval; left (default) or right
27
27
label : interval boundary to use for labeling; left (default) or right
28
28
nperiods : optional, integer
29
- convention : {'start', 'end', 'e', 's'}
29
+ convention : {'start', 'end', 'e', 's', 'both' }
30
30
If axis is PeriodIndex
31
31
32
32
Notes
@@ -216,12 +216,20 @@ def _resample_periods(self, obj):
216
216
new_index = PeriodIndex (data = [], freq = self .freq )
217
217
return obj .reindex (new_index )
218
218
else :
219
- start = axlabels [0 ].asfreq (self .freq , how = self .convention )
220
- end = axlabels [- 1 ].asfreq (self .freq , how = self .convention )
219
+ start_conv = end_conv = self .convention
220
+ if start_conv not in ('s' , 'start' , 'e' , 'end' ):
221
+ start_conv = 's'
222
+ if end_conv not in ('s' , 'start' , 'e' , 'end' ):
223
+ end_conv = 'e'
224
+ start = axlabels [0 ].asfreq (self .freq , how = start_conv )
225
+ end = axlabels [- 1 ].asfreq (self .freq , how = end_conv )
221
226
new_index = period_range (start , end , freq = self .freq )
222
227
223
228
# Start vs. end of period
224
- memb = axlabels .asfreq (self .freq , how = self .convention )
229
+ conv = self .convention
230
+ if conv not in ('s' , 'start' , 'e' , 'end' ):
231
+ conv = 's'
232
+ memb = axlabels .asfreq (self .freq , how = conv )
225
233
226
234
if is_subperiod (axlabels .freq , self .freq ) or self .how is not None :
227
235
# Downsampling
0 commit comments