Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/py-polars/tests/unit/functions/test_col.py
6939 views
1
from __future__ import annotations
2
3
import polars as pl
4
from polars import col
5
from polars.testing import assert_frame_equal
6
7
8
def test_col_select() -> None:
9
df = pl.DataFrame(
10
{
11
"ham": [1, 2, 3],
12
"hamburger": [11, 22, 33],
13
"foo": [3, 2, 1],
14
"bar": ["a", "b", "c"],
15
}
16
)
17
18
# Single column
19
assert df.select(pl.col("foo")).columns == ["foo"]
20
# Regex
21
assert df.select(pl.col("*")).columns == ["ham", "hamburger", "foo", "bar"]
22
assert df.select(pl.col("^ham.*$")).columns == ["ham", "hamburger"]
23
assert df.select(pl.col("*").exclude("ham")).columns == ["hamburger", "foo", "bar"]
24
# Multiple inputs
25
assert df.select(pl.col(["hamburger", "foo"])).columns == ["hamburger", "foo"]
26
assert df.select(pl.col("hamburger", "foo")).columns == ["hamburger", "foo"]
27
assert df.select(pl.col(pl.Series(["ham", "foo"]))).columns == ["ham", "foo"]
28
# Dtypes
29
assert df.select(pl.col(pl.String)).columns == ["bar"]
30
assert df.select(pl.col(pl.Int64, pl.Float64)).columns == [
31
"ham",
32
"hamburger",
33
"foo",
34
]
35
36
37
def test_col_series_selection() -> None:
38
ldf = pl.LazyFrame({"a": [1], "b": [1], "c": [1]})
39
srs = pl.Series(["b", "c"])
40
41
assert ldf.select(pl.col(srs)).collect_schema().names() == ["b", "c"]
42
43
44
def test_col_dot_style() -> None:
45
df = pl.DataFrame({"lower": 1, "UPPER": 2, "_underscored": 3})
46
47
result = df.select(
48
col.lower,
49
col.UPPER,
50
col._underscored,
51
)
52
53
expected = df.select("lower", "UPPER", "_underscored")
54
assert_frame_equal(result, expected)
55
56