Skip to content

Commit 954000c

Browse files
authored
fix: Preserve Series name in __rpow__ operation (#20072)
1 parent ca8c1ef commit 954000c

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

Diff for: py-polars/polars/series/series.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -1194,7 +1194,11 @@ def __pow__(self, exponent: int | float | Series) -> Series:
11941194
return self.pow(exponent)
11951195

11961196
def __rpow__(self, other: Any) -> Series:
1197-
return self.to_frame().select_seq(other ** F.col(self.name)).to_series()
1197+
return (
1198+
self.to_frame()
1199+
.select_seq((other ** F.col(self.name)).alias(self.name))
1200+
.to_series()
1201+
)
11981202

11991203
def __matmul__(self, other: Any) -> float | Series | None:
12001204
if isinstance(other, Sequence) or (

Diff for: py-polars/tests/unit/operations/arithmetic/test_arithmetic.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -549,8 +549,8 @@ def test_power_series() -> None:
549549
assert_series_equal(a**j, pl.Series([1, 4], dtype=Int64))
550550

551551
# rpow
552-
assert_series_equal(2.0**a, pl.Series("literal", [2.0, 4.0], dtype=Float64))
553-
assert_series_equal(2**b, pl.Series("literal", [None, 4.0], dtype=Float64))
552+
assert_series_equal(2.0**a, pl.Series(None, [2.0, 4.0], dtype=Float64))
553+
assert_series_equal(2**b, pl.Series(None, [None, 4.0], dtype=Float64))
554554

555555
with pytest.raises(ColumnNotFoundError):
556556
"hi" ** a
@@ -559,6 +559,12 @@ def test_power_series() -> None:
559559
assert_series_equal(a.pow(2), pl.Series([1, 4], dtype=Int64))
560560

561561

562+
def test_rpow_name_20071() -> None:
563+
result = 1 ** pl.Series("a", [1, 2])
564+
expected = pl.Series("a", [1, 1], pl.Int32)
565+
assert_series_equal(result, expected)
566+
567+
562568
@pytest.mark.parametrize(
563569
("expected", "expr", "column_names"),
564570
[

0 commit comments

Comments
 (0)