|
10 | 10 | from numpy.testing import assert_array_equal
|
11 | 11 |
|
12 | 12 | import pandas as pan
|
13 |
| -from pandas.core.api import DataFrame, Series, notnull, isnull |
| 13 | +from pandas.core.api import Panel, DataFrame, Series, notnull, isnull |
14 | 14 | from pandas.core import expressions as expr
|
15 | 15 |
|
16 | 16 | from pandas.util.testing import (assert_almost_equal,
|
17 | 17 | assert_series_equal,
|
18 |
| - assert_frame_equal) |
| 18 | + assert_frame_equal, |
| 19 | + assert_panel_equal) |
19 | 20 | from pandas.util import py3compat
|
20 | 21 |
|
21 | 22 | import pandas.util.testing as tm
|
|
31 | 32 | _mixed = DataFrame({ 'A' : _frame['A'].copy(), 'B' : _frame['B'].astype('float32'), 'C' : _frame['C'].astype('int64'), 'D' : _frame['D'].astype('int32') })
|
32 | 33 | _mixed2 = DataFrame({ 'A' : _frame2['A'].copy(), 'B' : _frame2['B'].astype('float32'), 'C' : _frame2['C'].astype('int64'), 'D' : _frame2['D'].astype('int32') })
|
33 | 34 | _integer = DataFrame(np.random.randint(1, 100, size=(10001, 4)), columns = list('ABCD'), dtype='int64')
|
| 35 | +_frame_panel = Panel(dict(ItemA = _frame.copy(), ItemB = (_frame.copy() + 3), ItemC=_frame.copy(), ItemD=_frame.copy())) |
| 36 | +_integer_panel = Panel(dict(ItemA = _integer, ItemB = (_integer+34).astype('int64'))) |
| 37 | +_mixed_panel = Panel(dict(ItemA = _mixed, ItemB = (_mixed+3))) |
34 | 38 |
|
35 | 39 | class TestExpressions(unittest.TestCase):
|
36 | 40 |
|
@@ -89,24 +93,41 @@ def run_series(self, ser, other, **kwargs):
|
89 | 93 | self.run_arithmetic_test(ser, other, assert_series_equal, test_flex=False, **kwargs)
|
90 | 94 | self.run_arithmetic_test(ser, other, assert_almost_equal, test_flex=True, **kwargs)
|
91 | 95 |
|
| 96 | + def run_panel(self, panel, other, **kwargs): |
| 97 | + self.run_arithmetic_test(panel, other, assert_panel_equal, test_flex=False, **kwargs) |
| 98 | + # self.run_arithmetic_test(panel, other, assert_panel_equal, test_flex=True, **kwargs) |
| 99 | + |
92 | 100 | def test_integer_arithmetic(self):
|
93 | 101 | self.run_frame(self.integer, self.integer)
|
94 | 102 | self.run_series(self.integer.icol(0), self.integer.icol(0))
|
95 | 103 |
|
| 104 | + def test_integer_panel(self): |
| 105 | + self.run_panel(_integer_panel, np.random.randint(1, 100)) |
| 106 | + |
96 | 107 | def test_float_arithemtic(self):
|
97 | 108 | self.run_frame(self.frame, self.frame)
|
98 | 109 | self.run_series(self.frame.icol(0), self.frame.icol(0))
|
99 | 110 |
|
| 111 | + def test_float_panel(self): |
| 112 | + self.run_panel(_frame_panel, np.random.randn() + 0.1) |
| 113 | + |
100 | 114 | def test_mixed_arithmetic(self):
|
101 | 115 | self.run_frame(self.mixed, self.mixed)
|
102 | 116 | for col in self.mixed.columns:
|
103 | 117 | self.run_series(self.mixed[col], self.mixed[col])
|
104 | 118 |
|
| 119 | + def test_mixed_panel(self): |
| 120 | + self.run_panel(_mixed_panel, np.random.randint(1, 100)) |
| 121 | + |
105 | 122 | def test_integer_with_zeros(self):
|
106 | 123 | integer = self.integer * np.random.randint(0, 2, size=np.shape(self.integer))
|
107 | 124 | self.run_frame(integer, integer)
|
108 | 125 | self.run_series(integer.icol(0), integer.icol(0))
|
109 | 126 |
|
| 127 | + def test_integer_panel_with_zeros(self): |
| 128 | + # this probably isn't the greatest test, but whatever |
| 129 | + self.run_panel(_mixed_panel, 0) |
| 130 | + |
110 | 131 | def test_invalid(self):
|
111 | 132 |
|
112 | 133 | # no op
|
|
0 commit comments