Skip to content

Commit a918530

Browse files
committed
Supports arrays in DataFrame.clip (#980)
1 parent f8b06e1 commit a918530

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

pandas-stubs/core/frame.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1632,8 +1632,8 @@ class DataFrame(NDFrame, OpsMixin):
16321632
) -> DataFrame: ...
16331633
def clip(
16341634
self,
1635-
lower: float | None = ...,
1636-
upper: float | None = ...,
1635+
lower: float | AnyArrayLike | None = ...,
1636+
upper: float | AnyArrayLike | None = ...,
16371637
*,
16381638
axis: Axis | None = ...,
16391639
inplace: _bool = ...,

tests/test_frame.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -527,9 +527,20 @@ def test_types_quantile() -> None:
527527
df.quantile(np.array([0.25, 0.75]))
528528

529529

530-
def test_types_clip() -> None:
530+
@pytest.mark.parametrize("lower", [None, 5, pd.Series([3, 4])])
531+
@pytest.mark.parametrize("upper", [None, 15, pd.Series([12, 13])])
532+
@pytest.mark.parametrize("axis", [None, 0, "index"])
533+
def test_types_clip(lower, upper, axis) -> None:
534+
def is_none_or_numeric(val: Any) -> bool:
535+
return val is None or isinstance(val, int | float)
536+
531537
df = pd.DataFrame(data={"col1": [20, 12], "col2": [3, 14]})
532-
df.clip(lower=5, upper=15)
538+
uses_array = not (is_none_or_numeric(lower) and is_none_or_numeric(upper))
539+
if uses_array and axis is None:
540+
with pytest.raises(ValueError):
541+
df.clip(lower=lower, upper=upper, axis=axis)
542+
else:
543+
df.clip(lower=lower, upper=upper, axis=axis)
533544

534545

535546
def test_types_abs() -> None:

0 commit comments

Comments
 (0)