Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/docs/source/src/python/user-guide/expressions/folds.py
7890 views
1
# --8<-- [start:mansum]
2
import operator
3
import polars as pl
4
5
df = pl.DataFrame(
6
{
7
"label": ["foo", "bar", "spam"],
8
"a": [1, 2, 3],
9
"b": [10, 20, 30],
10
}
11
)
12
13
result = df.select(
14
pl.fold(
15
acc=pl.lit(0),
16
function=operator.add,
17
exprs=pl.col("a", "b"),
18
).alias("sum_fold"),
19
pl.sum_horizontal(pl.col("a", "b")).alias("sum_horz"),
20
)
21
22
print(result)
23
# --8<-- [end:mansum]
24
25
# --8<-- [start:mansum-explicit]
26
acc = pl.lit(0)
27
f = operator.add
28
29
result = df.select(
30
f(f(acc, pl.col("a")), pl.col("b")),
31
pl.fold(acc=acc, function=f, exprs=pl.col("a", "b")).alias("sum_fold"),
32
)
33
34
print(result)
35
# --8<-- [end:mansum-explicit]
36
37
# --8<-- [start:manprod]
38
result = df.select(
39
pl.fold(
40
acc=pl.lit(0),
41
function=operator.mul,
42
exprs=pl.col("a", "b"),
43
).alias("prod"),
44
)
45
46
print(result)
47
# --8<-- [end:manprod]
48
49
# --8<-- [start:manprod-fixed]
50
result = df.select(
51
pl.fold(
52
acc=pl.lit(1),
53
function=operator.mul,
54
exprs=pl.col("a", "b"),
55
).alias("prod"),
56
)
57
58
print(result)
59
# --8<-- [end:manprod-fixed]
60
61
# --8<-- [start:conditional]
62
df = pl.DataFrame(
63
{
64
"a": [1, 2, 3],
65
"b": [0, 1, 2],
66
}
67
)
68
69
result = df.filter(
70
pl.fold(
71
acc=pl.lit(True),
72
function=lambda acc, x: acc & x,
73
exprs=pl.all() > 1,
74
)
75
)
76
print(result)
77
# --8<-- [end:conditional]
78
79
# --8<-- [start:string]
80
df = pl.DataFrame(
81
{
82
"a": ["a", "b", "c"],
83
"b": [1, 2, 3],
84
}
85
)
86
87
result = df.select(pl.concat_str(["a", "b"]))
88
print(result)
89
# --8<-- [end:string]
90
91