Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/py-polars/tests/unit/operations/test_rename.py
6939 views
1
import polars as pl
2
from polars.testing import assert_frame_equal
3
4
5
def test_rename_invalidate_cache_15884() -> None:
6
assert (
7
pl.LazyFrame({"a": [1], "b": [1]})
8
.rename({"b": "b1"}) # to cache schema
9
.with_columns(
10
c=pl.col("b1").drop_nulls(), d=pl.col("b1").drop_nulls()
11
) # to trigger CSE
12
.select("c", "d") # to trigger project push down
13
).collect().to_dict(as_series=False) == {"c": [1], "d": [1]}
14
15
16
def test_rename_lf() -> None:
17
ldf = pl.LazyFrame({"a": [1], "b": [2], "c": [3]})
18
out = ldf.rename({"a": "foo", "b": "bar"}).collect()
19
assert out.columns == ["foo", "bar", "c"]
20
21
22
def test_with_column_renamed_lf(fruits_cars: pl.DataFrame) -> None:
23
res = fruits_cars.lazy().rename({"A": "C"}).collect()
24
assert res.columns[0] == "C"
25
26
27
def test_rename_lf_lambda() -> None:
28
ldf = pl.LazyFrame({"a": [1], "b": [2], "c": [3]})
29
out = ldf.rename(
30
lambda col: "foo" if col == "a" else "bar" if col == "b" else col
31
).collect()
32
assert out.columns == ["foo", "bar", "c"]
33
34
35
def test_with_column_renamed() -> None:
36
df = pl.DataFrame({"a": [1, 2], "b": [3, 4]})
37
result = df.rename({"b": "c"})
38
expected = pl.DataFrame({"a": [1, 2], "c": [3, 4]})
39
assert_frame_equal(result, expected)
40
41
42
def test_rename_swap() -> None:
43
df = pl.DataFrame(
44
{
45
"a": [1, 2, 3, 4, 5],
46
"b": [5, 4, 3, 2, 1],
47
}
48
)
49
50
out = df.rename({"a": "b", "b": "a"})
51
expected = pl.DataFrame(
52
{
53
"b": [1, 2, 3, 4, 5],
54
"a": [5, 4, 3, 2, 1],
55
}
56
)
57
assert_frame_equal(out, expected)
58
59
# 6195
60
ldf = pl.DataFrame(
61
{
62
"weekday": [
63
1,
64
],
65
"priority": [
66
2,
67
],
68
"roundNumber": [
69
3,
70
],
71
"flag": [
72
4,
73
],
74
}
75
).lazy()
76
77
# Rename some columns (note: swapping two columns)
78
rename_dict = {
79
"weekday": "priority",
80
"priority": "weekday",
81
"roundNumber": "round_number",
82
}
83
ldf = ldf.rename(rename_dict)
84
85
# Select some columns
86
ldf = ldf.select(["priority", "weekday", "round_number"])
87
88
assert ldf.collect().to_dict(as_series=False) == {
89
"priority": [1],
90
"weekday": [2],
91
"round_number": [3],
92
}
93
94
95
def test_rename_same_name() -> None:
96
df = pl.DataFrame(
97
{
98
"nrs": [1, 2, 3, 4, 5],
99
"groups": ["A", "A", "B", "C", "B"],
100
}
101
).lazy()
102
df = df.rename({"groups": "groups"})
103
df = df.select(["groups"])
104
assert df.collect().to_dict(as_series=False) == {
105
"groups": ["A", "A", "B", "C", "B"]
106
}
107
df = pl.DataFrame(
108
{
109
"nrs": [1, 2, 3, 4, 5],
110
"groups": ["A", "A", "B", "C", "B"],
111
"test": [1, 2, 3, 4, 5],
112
}
113
).lazy()
114
df = df.rename({"nrs": "nrs", "groups": "groups"})
115
df = df.select(["groups"])
116
df.collect()
117
assert df.collect().to_dict(as_series=False) == {
118
"groups": ["A", "A", "B", "C", "B"]
119
}
120
121
122
def test_rename_df(df: pl.DataFrame) -> None:
123
out = df.rename({"strings": "bars", "int": "foos"})
124
# check if we can select these new columns
125
_ = out[["foos", "bars"]]
126
127
128
def test_rename_df_lambda() -> None:
129
df = pl.DataFrame({"a": [1], "b": [2], "c": [3]})
130
out = df.rename(lambda col: "foo" if col == "a" else "bar" if col == "b" else col)
131
assert out.columns == ["foo", "bar", "c"]
132
133
134
def test_rename_schema_order_6660() -> None:
135
df = pl.DataFrame(
136
{
137
"a": [],
138
"b": [],
139
"c": [],
140
"d": [],
141
}
142
)
143
144
mapper = {"a": "1", "b": "2", "c": "3", "d": "4"}
145
146
renamed = df.lazy().rename(mapper)
147
148
computed = renamed.select([pl.all(), pl.col("4").alias("computed")])
149
150
assert renamed.collect_schema() == renamed.collect().schema
151
assert computed.collect_schema() == computed.collect().schema
152
153
154
def test_rename_schema_17427() -> None:
155
assert (
156
pl.LazyFrame({"A": [1]})
157
.with_columns(B=2)
158
.select(["A", "B"])
159
.rename({"A": "C", "B": "A"})
160
.select(["C", "A"])
161
.collect()
162
).to_dict(as_series=False) == {"C": [1], "A": [2]}
163
164