40 lines
1023 B
Python
40 lines
1023 B
Python
import pytest
|
|
|
|
from pandas import (
|
|
DataFrame,
|
|
Series,
|
|
)
|
|
import pandas._testing as tm
|
|
|
|
|
|
class TestPipe:
|
|
def test_pipe(self, frame_or_series):
|
|
obj = DataFrame({"A": [1, 2, 3]})
|
|
expected = DataFrame({"A": [1, 4, 9]})
|
|
if frame_or_series is Series:
|
|
obj = obj["A"]
|
|
expected = expected["A"]
|
|
|
|
f = lambda x, y: x**y
|
|
result = obj.pipe(f, 2)
|
|
tm.assert_equal(result, expected)
|
|
|
|
def test_pipe_tuple(self, frame_or_series):
|
|
obj = DataFrame({"A": [1, 2, 3]})
|
|
obj = tm.get_obj(obj, frame_or_series)
|
|
|
|
f = lambda x, y: y
|
|
result = obj.pipe((f, "y"), 0)
|
|
tm.assert_equal(result, obj)
|
|
|
|
def test_pipe_tuple_error(self, frame_or_series):
|
|
obj = DataFrame({"A": [1, 2, 3]})
|
|
obj = tm.get_obj(obj, frame_or_series)
|
|
|
|
f = lambda x, y: y
|
|
|
|
msg = "y is both the pipe target and a keyword argument"
|
|
|
|
with pytest.raises(ValueError, match=msg):
|
|
obj.pipe((f, "y"), x=1, y=0)
|