Skip to content

Commit b214eda

Browse files
committed
Revert "Revert "MAINT: Remove Long and WidePanel (pandas-dev#15748)" (pandas-dev#15802)"
This reverts commit 22f9d0d.
1 parent 774030c commit b214eda

File tree

6 files changed

+61
-102
lines changed

6 files changed

+61
-102
lines changed

asv_bench/benchmarks/pandas_vb_common.py

-5
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@
2323
except:
2424
pass
2525

26-
try:
27-
Panel = Panel
28-
except Exception:
29-
Panel = WidePanel
30-
3126
# didn't add to namespace until later
3227
try:
3328
from pandas.core.index import MultiIndex

pandas/core/api.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
from pandas.core.series import Series
2323
from pandas.core.frame import DataFrame
24-
from pandas.core.panel import Panel, WidePanel
24+
from pandas.core.panel import Panel
2525
from pandas.core.panel4d import Panel4D
2626
from pandas.core.reshape.reshape import (
2727
pivot_simple as pivot, get_dummies)

pandas/core/panel.py

-21
Original file line numberDiff line numberDiff line change
@@ -1617,24 +1617,3 @@ def f(self, other, axis=0):
16171617
ops.add_special_arithmetic_methods(Panel, **ops.panel_special_funcs)
16181618
Panel._add_aggregate_operations()
16191619
Panel._add_numeric_operations()
1620-
1621-
1622-
# legacy
1623-
class WidePanel(Panel):
1624-
1625-
def __init__(self, *args, **kwargs):
1626-
# deprecation, #10892
1627-
warnings.warn("WidePanel is deprecated. Please use Panel",
1628-
FutureWarning, stacklevel=2)
1629-
1630-
super(WidePanel, self).__init__(*args, **kwargs)
1631-
1632-
1633-
class LongPanel(DataFrame):
1634-
1635-
def __init__(self, *args, **kwargs):
1636-
# deprecation, #10892
1637-
warnings.warn("LongPanel is deprecated. Please use DataFrame",
1638-
FutureWarning, stacklevel=2)
1639-
1640-
super(LongPanel, self).__init__(*args, **kwargs)

pandas/tests/api/test_api.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ class TestPDApi(Base):
5151
'TimedeltaIndex', 'Timestamp', 'Interval', 'IntervalIndex']
5252

5353
# these are already deprecated; awaiting removal
54-
deprecated_classes = ['WidePanel', 'Panel4D', 'TimeGrouper',
55-
'SparseList', 'Expr', 'Term']
54+
deprecated_classes = ['Panel4D',
55+
'TimeGrouper', 'SparseList', 'Expr', 'Term']
5656

5757
# these should be deprecated in the future
5858
deprecated_classes_in_future = ['Panel']

pandas/tests/io/test_pytables.py

-3
Original file line numberDiff line numberDiff line change
@@ -3145,9 +3145,6 @@ def _check(left, right):
31453145
wp = tm.makePanel()
31463146
self._check_roundtrip(wp.to_frame(), _check)
31473147

3148-
def test_longpanel(self):
3149-
pass
3150-
31513148
def test_overwrite_node(self):
31523149

31533150
with ensure_clean_store(self.path) as store:

pandas/tests/test_panel.py

+58-70
Original file line numberDiff line numberDiff line change
@@ -184,10 +184,6 @@ def wrapper(x):
184184

185185
class SafeForSparse(object):
186186

187-
@classmethod
188-
def assert_panel_equal(cls, x, y):
189-
assert_panel_equal(x, y)
190-
191187
def test_get_axis(self):
192188
assert (self.panel._get_axis(0) is self.panel.items)
193189
assert (self.panel._get_axis(1) is self.panel.major_axis)
@@ -353,13 +349,11 @@ def check_op(op, name):
353349
raise
354350

355351
def test_combinePanel(self):
356-
with catch_warnings(record=True):
357-
result = self.panel.add(self.panel)
358-
assert_panel_equal(result, self.panel * 2)
352+
with catch_warnings(record=True):result = self.panel.add(self.panel)
353+
assert_panel_equal(result, self.panel * 2)
359354

360355
def test_neg(self):
361-
with catch_warnings(record=True):
362-
assert_panel_equal(-self.panel, self.panel * -1)
356+
assert_panel_equal(-self.panel, self.panel * -1)
363357

364358
# issue 7692
365359
def test_raise_when_not_implemented(self):
@@ -379,26 +373,25 @@ def test_select(self):
379373
with catch_warnings(record=True):
380374
p = self.panel
381375

382-
# select items
383-
result = p.select(lambda x: x in ('ItemA', 'ItemC'), axis='items')
384-
expected = p.reindex(items=['ItemA', 'ItemC'])
385-
assert_panel_equal(result, expected)
376+
# select items
377+
result = p.select(lambda x: x in ('ItemA', 'ItemC'), axis='items')
378+
expected = p.reindex(items=['ItemA', 'ItemC'])
379+
assert_panel_equal(result, expected)
386380

387-
# select major_axis
388-
result = p.select(lambda x: x >= datetime(
389-
2000, 1, 15), axis='major')
390-
new_major = p.major_axis[p.major_axis >= datetime(2000, 1, 15)]
391-
expected = p.reindex(major=new_major)
392-
assert_panel_equal(result, expected)
381+
# select major_axis
382+
result = p.select(lambda x: x >= datetime(2000, 1, 15), axis='major')
383+
new_major = p.major_axis[p.major_axis >= datetime(2000, 1, 15)]
384+
expected = p.reindex(major=new_major)
385+
assert_panel_equal(result, expected)
393386

394-
# select minor_axis
395-
result = p.select(lambda x: x in ('D', 'A'), axis=2)
396-
expected = p.reindex(minor=['A', 'D'])
397-
assert_panel_equal(result, expected)
387+
# select minor_axis
388+
result = p.select(lambda x: x in ('D', 'A'), axis=2)
389+
expected = p.reindex(minor=['A', 'D'])
390+
assert_panel_equal(result, expected)
398391

399-
# corner case, empty thing
400-
result = p.select(lambda x: x in ('foo', ), axis='items')
401-
assert_panel_equal(result, p.reindex(items=[]))
392+
# corner case, empty thing
393+
result = p.select(lambda x: x in ('foo', ), axis='items')
394+
assert_panel_equal(result, p.reindex(items=[]))
402395

403396
def test_get_value(self):
404397
for item in self.panel.items:
@@ -412,12 +405,11 @@ def test_get_value(self):
412405

413406
def test_abs(self):
414407

415-
with catch_warnings(record=True):
416-
result = self.panel.abs()
417-
result2 = abs(self.panel)
418-
expected = np.abs(self.panel)
419-
assert_panel_equal(result, expected)
420-
assert_panel_equal(result2, expected)
408+
with catch_warnings(record=True):result = self.panel.abs()
409+
result2 = abs(self.panel)
410+
expected = np.abs(self.panel)
411+
assert_panel_equal(result, expected)
412+
assert_panel_equal(result2, expected)
421413

422414
df = self.panel['ItemA']
423415
result = df.abs()
@@ -906,10 +898,6 @@ def test_set_value(self):
906898
class TestPanel(PanelTests, CheckIndexing, SafeForLongAndSparse,
907899
SafeForSparse):
908900

909-
@classmethod
910-
def assert_panel_equal(cls, x, y):
911-
assert_panel_equal(x, y)
912-
913901
def setup_method(self, method):
914902
self.panel = make_test_panel()
915903
self.panel.major_axis.name = None
@@ -2103,38 +2091,36 @@ def test_pct_change(self):
21032091
assert_panel_equal(result, expected)
21042092

21052093
def test_round(self):
2106-
with catch_warnings(record=True):
2107-
values = [[[-3.2, 2.2], [0, -4.8213], [3.123, 123.12],
2108-
[-1566.213, 88.88], [-12, 94.5]],
2109-
[[-5.82, 3.5], [6.21, -73.272], [-9.087, 23.12],
2110-
[272.212, -99.99], [23, -76.5]]]
2111-
evalues = [[[float(np.around(i)) for i in j] for j in k]
2112-
for k in values]
2113-
p = Panel(values, items=['Item1', 'Item2'],
2114-
major_axis=date_range('1/1/2000', periods=5),
2115-
minor_axis=['A', 'B'])
2116-
expected = Panel(evalues, items=['Item1', 'Item2'],
2117-
major_axis=date_range('1/1/2000', periods=5),
2118-
minor_axis=['A', 'B'])
2119-
result = p.round()
2120-
assert_panel_equal(expected, result)
2094+
with catch_warnings(record=True):values = [[[-3.2, 2.2], [0, -4.8213], [3.123, 123.12],
2095+
[-1566.213, 88.88], [-12, 94.5]],
2096+
[[-5.82, 3.5], [6.21, -73.272], [-9.087, 23.12],
2097+
[272.212, -99.99], [23, -76.5]]]
2098+
evalues = [[[float(np.around(i)) for i in j] for j in k]
2099+
for k in values]
2100+
p = Panel(values, items=['Item1', 'Item2'],
2101+
major_axis=date_range('1/1/2000', periods=5),
2102+
minor_axis=['A', 'B'])
2103+
expected = Panel(evalues, items=['Item1', 'Item2'],
2104+
major_axis=date_range('1/1/2000', periods=5),
2105+
minor_axis=['A', 'B'])
2106+
result = p.round()
2107+
assert_panel_equal(expected, result)
21212108

21222109
def test_numpy_round(self):
2123-
with catch_warnings(record=True):
2124-
values = [[[-3.2, 2.2], [0, -4.8213], [3.123, 123.12],
2125-
[-1566.213, 88.88], [-12, 94.5]],
2126-
[[-5.82, 3.5], [6.21, -73.272], [-9.087, 23.12],
2127-
[272.212, -99.99], [23, -76.5]]]
2128-
evalues = [[[float(np.around(i)) for i in j] for j in k]
2129-
for k in values]
2130-
p = Panel(values, items=['Item1', 'Item2'],
2131-
major_axis=date_range('1/1/2000', periods=5),
2132-
minor_axis=['A', 'B'])
2133-
expected = Panel(evalues, items=['Item1', 'Item2'],
2134-
major_axis=date_range('1/1/2000', periods=5),
2135-
minor_axis=['A', 'B'])
2136-
result = np.round(p)
2137-
assert_panel_equal(expected, result)
2110+
with catch_warnings(record=True):values = [[[-3.2, 2.2], [0, -4.8213], [3.123, 123.12],
2111+
[-1566.213, 88.88], [-12, 94.5]],
2112+
[[-5.82, 3.5], [6.21, -73.272], [-9.087, 23.12],
2113+
[272.212, -99.99], [23, -76.5]]]
2114+
evalues = [[[float(np.around(i)) for i in j] for j in k]
2115+
for k in values]
2116+
p = Panel(values, items=['Item1', 'Item2'],
2117+
major_axis=date_range('1/1/2000', periods=5),
2118+
minor_axis=['A', 'B'])
2119+
expected = Panel(evalues, items=['Item1', 'Item2'],
2120+
major_axis=date_range('1/1/2000', periods=5),
2121+
minor_axis=['A', 'B'])
2122+
result = np.round(p)
2123+
assert_panel_equal(expected, result)
21382124

21392125
msg = "the 'out' parameter is not supported"
21402126
tm.assert_raises_regex(ValueError, msg, np.round, p, out=p)
@@ -2461,13 +2447,15 @@ def test_sort_values(self):
24612447
pytest.raises(NotImplementedError, self.panel.sort_values, 'ItemA')
24622448

24632449

2464-
class TestLongPanel(object):
2450+
class TestPanelFrame(object):
24652451
"""
2466-
LongPanel no longer exists, but...
2452+
Check that conversions to and from Panel to DataFrame work.
24672453
"""
24682454

2469-
def setup_method(self, method):
2470-
panel = make_test_panel()
2455+
def setUp(self):
2456+
panel = tm.makePanel()
2457+
tm.add_nans(panel)
2458+
24712459
self.panel = panel.to_frame()
24722460
self.unfiltered_panel = panel.to_frame(filter_observations=False)
24732461

0 commit comments

Comments
 (0)