BUG: setitem fails on mixed-type Panel4D by stahlous · Pull Request #8702 · pandas-dev/pandas (original) (raw)

In [1]: from pandas.util import testing as tmd

In [2]: p4d = tmd.makePanel4D()

In [3]: p4d['foo'] = 'bar'

In [4]: p4d.iloc[0,0,0,0] = 0
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-4-bb74b95f7244> in <module>()
----> 1 p4d.iloc[0,0,0,0] = 0

/home/stahlous/pd_dev/pandas/pandas/core/indexing.py in __setitem__(self, key, value)
    119                 indexer = self._convert_to_indexer(key, is_setter=True)
    120
--> 121         self._setitem_with_indexer(indexer, value)
    122
    123     def _has_valid_type(self, k, axis):

/home/stahlous/pd_dev/pandas/pandas/core/indexing.py in _setitem_with_indexer(self, indexer, value)
    356             # indexer here
    357             if (len(labels) == 1 and
--> 358                     isinstance(self.obj[labels[0]].index, MultiIndex)):
    359                 item = labels[0]
    360                 obj = self.obj[item]

/home/stahlous/pd_dev/pandas/pandas/core/generic.py in __getattr__(self, name)
   1927         """
   1928         if name in self._internal_names_set:
-> 1929             return object.__getattribute__(self, name)
   1930         elif name in self._metadata:
   1931             return object.__getattribute__(self, name)

AttributeError: 'Panel' object has no attribute 'index'

Fortunately, it looks like a simple fix. If this looks OK. I'll add a note to v0.15.1.txt (doesn't have a GH issue number yet).