Trying to reproduce example [_85]
from the docs:
from pandas import DataFrame, Timestamp
c = pandas.DataFrame({u'ul_payload': {('a', Timestamp('2016-11-01 06:15:00')): 5, ('a', Timestamp('2016-11-01 07:45:00')): 8, ('a', Timestamp('2016-11-01 09:00:00')): 9, ('a', Timestamp('2016-11-01 07:15:00')): 6, ('a', Timestamp('2016-11-01 07:30:00')): 7, ('a', Timestamp('2016-11-01 06:00:00')): 4}, u'dl_payload': {('a', Timestamp('2016-11-01 06:15:00')): 15, ('a', Timestamp('2016-11-01 07:45:00')): 18, ('a', Timestamp('2016-11-01 09:00:00')): 19, ('a', Timestamp('2016-11-01 07:15:00')): 16, ('a', Timestamp('2016-11-01 07:30:00')): 17, ('a', Timestamp('2016-11-01 06:00:00')): 14}})
In [27]: c
Out[27]:
dl_payload ul_payload
a 2016-11-01 06:00:00 14 4
2016-11-01 06:15:00 15 5
2016-11-01 07:15:00 16 6
2016-11-01 07:30:00 17 7
2016-11-01 07:45:00 18 8
2016-11-01 09:00:00 19 9
In [30]: c.groupby(level=0).rolling(window=3).agg([np.sum, np.max])
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
/Users/olevinkr/repos/research/src/son/research/apps/deep_forecast/data.py in <module>()
----> 1 c.groupby(level=0).rolling(window=3).agg([np.sum, np.max])
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/window.pyc in aggregate(self, arg, *args, **kwargs)
1063 @Appender(SelectionMixin._agg_doc)
1064 def aggregate(self, arg, *args, **kwargs):
-> 1065 return super(Rolling, self).aggregate(arg, *args, **kwargs)
1066
1067 agg = aggregate
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/window.pyc in aggregate(self, arg, *args, **kwargs)
319
320 def aggregate(self, arg, *args, **kwargs):
--> 321 result, how = self._aggregate(arg, *args, **kwargs)
322 if result is None:
323 return self.apply(arg, args=args, kwargs=kwargs)
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in _aggregate(self, arg, *args, **kwargs)
566 return result, True
567 elif hasattr(arg, '__iter__'):
--> 568 return self._aggregate_multiple_funcs(arg, _level=_level), None
569 else:
570 result = None
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in _aggregate_multiple_funcs(self, arg, _level)
611 try:
612 colg = self._gotitem(col, ndim=1, subset=obj[col])
--> 613 results.append(colg.aggregate(arg))
614 keys.append(col)
615 except (TypeError, DataError):
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/window.pyc in aggregate(self, arg, *args, **kwargs)
1063 @Appender(SelectionMixin._agg_doc)
1064 def aggregate(self, arg, *args, **kwargs):
-> 1065 return super(Rolling, self).aggregate(arg, *args, **kwargs)
1066
1067 agg = aggregate
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/window.pyc in aggregate(self, arg, *args, **kwargs)
319
320 def aggregate(self, arg, *args, **kwargs):
--> 321 result, how = self._aggregate(arg, *args, **kwargs)
322 if result is None:
323 return self.apply(arg, args=args, kwargs=kwargs)
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in _aggregate(self, arg, *args, **kwargs)
566 return result, True
567 elif hasattr(arg, '__iter__'):
--> 568 return self._aggregate_multiple_funcs(arg, _level=_level), None
569 else:
570 result = None
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in _aggregate_multiple_funcs(self, arg, _level)
595 for a in arg:
596 try:
--> 597 colg = self._gotitem(obj.name, ndim=1, subset=obj)
598 results.append(colg.aggregate(a))
599
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in _gotitem(self, key, ndim, subset)
682 for attr in self._attributes])
683 self = self.__class__(subset,
--> 684 groupby=self._groupby[key],
685 parent=self,
686 **kwargs)
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in __getitem__(self, key)
328 def __getitem__(self, key):
329 if self._selection is not None:
--> 330 raise Exception('Column(s) %s already selected' % self._selection)
331
332 if isinstance(key, (list, tuple, ABCSeries, ABCIndexClass,
Exception: Column(s) dl_payload already selected
Aggregating by a single function doesn't throw the exception (xref https://github.com/pandas-dev/pandas/issues/14013):
In [29]: c.groupby(level=0).rolling(window=3).agg(np.sum)
Out[29]:
dl_payload ul_payload
a a 2016-11-01 06:00:00 NaN NaN
2016-11-01 06:15:00 NaN NaN
2016-11-01 07:15:00 45.0 15.0
2016-11-01 07:30:00 48.0 18.0
2016-11-01 07:45:00 51.0 21.0
2016-11-01 09:00:00 54.0 24.0
INSTALLED VERSIONS
------------------
commit: None
python: 2.7.13.final.0
python-bits: 64
OS: Darwin
OS-release: 16.4.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8
pandas: 0.19.2
nose: 1.3.7
pip: 9.0.1
setuptools: 28.6.1
Cython: 0.25.2
numpy: 1.11.3
scipy: 0.18.1
statsmodels: 0.6.1
xarray: 0.9.1
IPython: 5.1.0
sphinx: 1.5.1
patsy: 0.4.1
dateutil: 2.6.0
pytz: 2016.10
blosc: None
bottleneck: 1.2.0
tables: 3.3.0
numexpr: 2.6.2
matplotlib: 2.0.0
openpyxl: 2.4.1
xlrd: 1.0.0
xlwt: 1.2.0
xlsxwriter: 0.9.6
lxml: 3.7.2
bs4: 4.5.3
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: 1.1.5
pymysql: None
psycopg2: 2.6.2 (dt dec pq3 ext lo64)
jinja2: 2.9.4
boto: 2.45.0
pandas_datareader: None
Comment From: ohadle
Similarly, example [_88]
:
In [39]: c.groupby(level=0).rolling(window=3).agg({'dl_payload': [np.sum, np.max], 'ul_payload': [np.sum, np.max]})
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
/Users/olevinkr/repos/research/src/son/research/apps/deep_forecast/data.py in <module>()
----> 1 c.groupby(level=0).rolling(window=3).agg({'dl_payload': [np.sum, np.max], 'ul_payload': [np.sum, np.max]})
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/window.pyc in aggregate(self, arg, *args, **kwargs)
1063 @Appender(SelectionMixin._agg_doc)
1064 def aggregate(self, arg, *args, **kwargs):
-> 1065 return super(Rolling, self).aggregate(arg, *args, **kwargs)
1066
1067 agg = aggregate
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/window.pyc in aggregate(self, arg, *args, **kwargs)
319
320 def aggregate(self, arg, *args, **kwargs):
--> 321 result, how = self._aggregate(arg, *args, **kwargs)
322 if result is None:
323 return self.apply(arg, args=args, kwargs=kwargs)
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in _aggregate(self, arg, *args, **kwargs)
547
548 try:
--> 549 result = _agg(arg, _agg_1dim)
550 except SpecificationError:
551
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in _agg(arg, func)
498 result = compat.OrderedDict()
499 for fname, agg_how in compat.iteritems(arg):
--> 500 result[fname] = func(fname, agg_how)
501 return result
502
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in _agg_1dim(name, how, subset)
481 raise SpecificationError("nested dictionary is ambiguous "
482 "in aggregation")
--> 483 return colg.aggregate(how, _level=(_level or 0) + 1)
484
485 def _agg_2dim(name, how):
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/window.pyc in aggregate(self, arg, *args, **kwargs)
1063 @Appender(SelectionMixin._agg_doc)
1064 def aggregate(self, arg, *args, **kwargs):
-> 1065 return super(Rolling, self).aggregate(arg, *args, **kwargs)
1066
1067 agg = aggregate
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/window.pyc in aggregate(self, arg, *args, **kwargs)
319
320 def aggregate(self, arg, *args, **kwargs):
--> 321 result, how = self._aggregate(arg, *args, **kwargs)
322 if result is None:
323 return self.apply(arg, args=args, kwargs=kwargs)
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in _aggregate(self, arg, *args, **kwargs)
566 return result, True
567 elif hasattr(arg, '__iter__'):
--> 568 return self._aggregate_multiple_funcs(arg, _level=_level), None
569 else:
570 result = None
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in _aggregate_multiple_funcs(self, arg, _level)
595 for a in arg:
596 try:
--> 597 colg = self._gotitem(obj.name, ndim=1, subset=obj)
598 results.append(colg.aggregate(a))
599
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in _gotitem(self, key, ndim, subset)
682 for attr in self._attributes])
683 self = self.__class__(subset,
--> 684 groupby=self._groupby[key],
685 parent=self,
686 **kwargs)
/Users/olevinkr/anaconda/lib/python2.7/site-packages/pandas/core/base.pyc in __getitem__(self, key)
328 def __getitem__(self, key):
329 if self._selection is not None:
--> 330 raise Exception('Column(s) %s already selected' % self._selection)
331
332 if isinstance(key, (list, tuple, ABCSeries, ABCIndexClass,
Exception: Column(s) ul_payload already selected
Comment From: jreback
this is a dupe of #15072
pull-requests to fix are welcome!