diff --git a/doc/source/release.rst b/doc/source/release.rst index 74b68938d62eb..3da064a09519f 100644 --- a/doc/source/release.rst +++ b/doc/source/release.rst @@ -121,6 +121,8 @@ pandas 0.13 (:issue:`4405`, :issue:`4437`) - Fixed a py3 compat issue where bytes were being repr'd as tuples (:issue:`4455`) + - Fixed Panel attribute naming conflict if item is named 'a' + (:issue:`3440`) pandas 0.12 =========== diff --git a/pandas/core/panel.py b/pandas/core/panel.py index 9f7785ae27465..75990e76c2b8f 100644 --- a/pandas/core/panel.py +++ b/pandas/core/panel.py @@ -165,12 +165,12 @@ class Panel(NDFrame): """ _AXIS_ORDERS = ['items', 'major_axis', 'minor_axis'] - _AXIS_NUMBERS = dict([(a, i) for i, a in enumerate(_AXIS_ORDERS)]) + _AXIS_NUMBERS = dict((a, i) for i, a in enumerate(_AXIS_ORDERS)) _AXIS_ALIASES = { 'major': 'major_axis', 'minor': 'minor_axis' } - _AXIS_NAMES = dict([(i, a) for i, a in enumerate(_AXIS_ORDERS)]) + _AXIS_NAMES = dict(enumerate(_AXIS_ORDERS)) _AXIS_SLICEMAP = { 'major_axis': 'index', 'minor_axis': 'columns' diff --git a/pandas/tests/test_panel.py b/pandas/tests/test_panel.py index d04192772ce7d..94afac7d9328f 100644 --- a/pandas/tests/test_panel.py +++ b/pandas/tests/test_panel.py @@ -1340,6 +1340,12 @@ def test_rename(self): def test_get_attr(self): assert_frame_equal(self.panel['ItemA'], self.panel.ItemA) + # specific cases from #3440 + self.panel['a'] = self.panel['ItemA'] + assert_frame_equal(self.panel['a'], self.panel.a) + self.panel['i'] = self.panel['ItemA'] + assert_frame_equal(self.panel['i'], self.panel.i) + def test_group_agg(self): values = np.ones((10, 2)) * np.arange(10).reshape((10, 1)) bounds = np.arange(5) * 2