From 141b831c0e364d6d9472d3772da9a067830ef21f Mon Sep 17 00:00:00 2001 From: Dan Birken Date: Sun, 4 Aug 2013 11:32:38 -0700 Subject: [PATCH] BUG: Fix Panel instance variable namespace issue GH3440 --- doc/source/release.rst | 2 ++ pandas/core/panel.py | 4 ++-- pandas/tests/test_panel.py | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) 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