def test_update_raise_on_overlap(self): pan = Panel([[[1.5, np.nan, 3.], [1.5, np.nan, 3.], [1.5, np.nan, 3.], [1.5, np.nan, 3.]], [[1.5, np.nan, 3.], [1.5, np.nan, 3.], [1.5, np.nan, 3.], [1.5, np.nan, 3.]]]) with pytest.raises(ValueError, match='Data overlaps'): pan.update(pan, errors='raise')
def test_update_filtered(self): pan = Panel( [ [[1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]], [[1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]], ] ) other = Panel([[[3.6, 2.0, np.nan], [np.nan, np.nan, 7]]], items=[1]) pan.update(other, filter_func=lambda x: x > 2) expected = Panel( [ [[1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]], [[1.5, np.nan, 3], [1.5, np.nan, 7], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]], ] ) assert_panel_equal(pan, expected)
def test_update_nooverwrite(self): pan = Panel( [ [[1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]], [[1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]], ] ) other = Panel([[[3.6, 2.0, np.nan], [np.nan, np.nan, 7]]], items=[1]) pan.update(other, overwrite=False) expected = Panel( [ [[1.5, np.nan, 3], [1.5, np.nan, 3], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]], [[1.5, 2.0, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]], ] ) assert_panel_equal(pan, expected)
def test_update_from_dict(self): pan = Panel( { "one": DataFrame([[1.5, np.nan, 3], [1.5, np.nan, 3], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]]), "two": DataFrame([[1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]]), } ) other = {"two": DataFrame([[3.6, 2.0, np.nan], [np.nan, np.nan, 7]])} pan.update(other) expected = Panel( { "two": DataFrame([[3.6, 2.0, 3], [1.5, np.nan, 7], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]]), "one": DataFrame([[1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0], [1.5, np.nan, 3.0]]), } ) assert_panel_equal(pan, expected)
def test_update_deprecation(self, raise_conflict): pan = Panel([[[1.5, np.nan, 3.]]]) other = Panel([[[]]]) with tm.assert_produces_warning(FutureWarning): pan.update(other, raise_conflict=raise_conflict)
def test_update_raise_bad_parameter(self, bad_kwarg, exception, msg): pan = Panel([[[1.5, np.nan, 3.]]]) with pytest.raises(exception, match=msg): pan.update(pan, **bad_kwarg)