Skip to content

Commit 764ce5e

Browse files
committed
BUG: hierarchical item selection in Panel.__getitem__
1 parent d585c7c commit 764ce5e

File tree

3 files changed

+7
-31
lines changed

3 files changed

+7
-31
lines changed

pandas/core/panel.py

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -327,29 +327,6 @@ def __getitem__(self, key):
327327
return self._getitem_multilevel(key)
328328
return super(Panel, self).__getitem__(key)
329329

330-
def _getitem_multilevel(self, key):
331-
loc = self.items.get_loc(key)
332-
if isinstance(loc, (slice, np.ndarray)):
333-
new_index = self.items[loc]
334-
result_index = _maybe_droplevels(new_index, key)
335-
if self._is_mixed_type:
336-
result = self.reindex(items=new_index)
337-
result.index = result_index
338-
else:
339-
new_values = self.values[loc, :, :]
340-
result = Panel(new_values,
341-
items=self.items[loc],
342-
major_axis=self.major_axis,
343-
minor_axis=self.minor_axis)
344-
return result
345-
else:
346-
return self._get_item_cache(key)
347-
348-
def __getitem__(self, key):
349-
if isinstance(self.items, MultiIndex):
350-
return self._getitem_multilevel(key)
351-
return super(Panel, self).__getitem__(key)
352-
353330
def _getitem_multilevel(self, key):
354331
loc = self.items.get_loc(key)
355332
if isinstance(loc, (slice, np.ndarray)):
@@ -361,7 +338,7 @@ def _getitem_multilevel(self, key):
361338
else:
362339
new_values = self.values[loc, :, :]
363340
result = Panel(new_values,
364-
items=self.items[loc],
341+
items=result_index,
365342
major_axis=self.major_axis,
366343
minor_axis=self.minor_axis)
367344
return result

pandas/tests/test_panel.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -951,16 +951,16 @@ def test_shift(self):
951951
def test_multiindex_get(self):
952952
ind = MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1), ('b',2)],
953953
names=['first', 'second'])
954-
wp = Panel(np.random.random((4,5,5)),
955-
items=ind,
956-
major_axis=np.arange(5),
954+
wp = Panel(np.random.random((4,5,5)),
955+
items=ind,
956+
major_axis=np.arange(5),
957957
minor_axis=np.arange(5))
958958
f1 = wp['a']
959959
f2 = wp.ix['a']
960960
assert_panel_equal(f1, f2)
961961

962-
self.assert_((f1.items == ind[0:2]).all())
963-
self.assert_((f2.items == ind[0:2]).all())
962+
self.assert_((f1.items == [1, 2]).all())
963+
self.assert_((f2.items == [1, 2]).all())
964964

965965
def test_repr_empty(self):
966966
empty = Panel()

scripts/groupby_speed.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
from pandas import *
22

33
rng = DateRange('1/3/2011', '11/30/2011', offset=datetools.Minute())
4-
rng5 = DateRange('1/3/2011', '11/30/2011', offset=datetools.Minute(5))
54

65
df = DataFrame(np.random.randn(len(rng), 5), index=rng,
76
columns=list('OHLCV'))
87

8+
rng5 = DateRange('1/3/2011', '11/30/2011', offset=datetools.Minute(5))
99
gp = rng5.asof
10-
1110
grouped = df.groupby(gp)
1211

1312
def get1(dt):

0 commit comments

Comments
 (0)