Skip to content

Commit c399edf

Browse files
author
tp
committed
Added repr string for Grouper
1 parent e2a0251 commit c399edf

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

pandas/core/groupby.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,17 @@ def _get_binner_for_grouping(self, obj):
336336
def groups(self):
337337
return self.grouper.groups
338338

339+
def __repr__(self):
340+
if not hasattr(self, '_repr'):
341+
defaults = dict(key=None, level=None, freq=None, axis=0,
342+
sort=False)
343+
attrs = {k: v for k, v in self.__dict__.items()
344+
if k in defaults and v != defaults[k]}
345+
attrs = ", ".join("{}={!r}".format(k, v) for k, v in attrs.items())
346+
cls_name = self.__class__.__name__
347+
self._repr = "{}({})".format(cls_name, attrs)
348+
return self._repr
349+
339350

340351
class GroupByPlot(PandasObject):
341352
"""

pandas/core/resample.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,6 +1057,8 @@ def __init__(self, freq='Min', closed=None, label=None, how='mean',
10571057
convention=None, base=0, **kwargs):
10581058
freq = to_offset(freq)
10591059

1060+
# _default_values is used for generating the __repr__ string
1061+
self._default_values = {}
10601062
end_types = set(['M', 'A', 'Q', 'BM', 'BA', 'BQ', 'W'])
10611063
rule = freq.rule_code
10621064
if (rule in end_types or
@@ -1065,11 +1067,13 @@ def __init__(self, freq='Min', closed=None, label=None, how='mean',
10651067
closed = 'right'
10661068
if label is None:
10671069
label = 'right'
1070+
self._default_values.update(closed='right', label='right')
10681071
else:
10691072
if closed is None:
10701073
closed = 'left'
10711074
if label is None:
10721075
label = 'left'
1076+
self._default_values.update(closed='left', label='left')
10731077

10741078
self.closed = closed
10751079
self.label = label
@@ -1293,6 +1297,29 @@ def _get_time_period_bins(self, ax):
12931297

12941298
return binner, bins, labels
12951299

1300+
def __repr__(self):
1301+
if not hasattr(self, '_repr'):
1302+
defaults = dict(key=None, level=None, freq=None,
1303+
axis=0, sort=False)
1304+
timegrouper_defaults = dict(freq='Min',
1305+
how='mean',
1306+
nperiods=None, axis=0,
1307+
fill_method=None, limit=None,
1308+
loffset=None,
1309+
kind=None,
1310+
convention='e', base=0,
1311+
sort=True)
1312+
timegrouper_defaults.update(self._default_values)
1313+
defaults.update(timegrouper_defaults)
1314+
1315+
attrs = {k: v for k, v in self.__dict__.items()
1316+
if k in defaults and v != defaults[k]}
1317+
attrs['freq'] = attrs['freq'].freqstr
1318+
attrs = ", ".join("{}={!r}".format(k, v) for k, v in attrs.items())
1319+
cls_name = self.__class__.__name__
1320+
self._repr = "{}({})".format(cls_name, attrs)
1321+
return self._repr
1322+
12961323

12971324
def _take_new_index(obj, indexer, new_index, axis=0):
12981325
from pandas.core.api import Series, DataFrame

0 commit comments

Comments
 (0)