polars-runtime-compat 1.34.0b2__cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of polars-runtime-compat might be problematic. Click here for more details.
- _polars_runtime_compat/.gitkeep +0 -0
- _polars_runtime_compat/_polars_runtime_compat.abi3.so +0 -0
- polars/__init__.py +528 -0
- polars/_cpu_check.py +265 -0
- polars/_dependencies.py +355 -0
- polars/_plr.py +99 -0
- polars/_plr.pyi +2496 -0
- polars/_reexport.py +23 -0
- polars/_typing.py +478 -0
- polars/_utils/__init__.py +37 -0
- polars/_utils/async_.py +102 -0
- polars/_utils/cache.py +176 -0
- polars/_utils/cloud.py +40 -0
- polars/_utils/constants.py +29 -0
- polars/_utils/construction/__init__.py +46 -0
- polars/_utils/construction/dataframe.py +1397 -0
- polars/_utils/construction/other.py +72 -0
- polars/_utils/construction/series.py +560 -0
- polars/_utils/construction/utils.py +118 -0
- polars/_utils/convert.py +224 -0
- polars/_utils/deprecation.py +406 -0
- polars/_utils/getitem.py +457 -0
- polars/_utils/logging.py +11 -0
- polars/_utils/nest_asyncio.py +264 -0
- polars/_utils/parquet.py +15 -0
- polars/_utils/parse/__init__.py +12 -0
- polars/_utils/parse/expr.py +242 -0
- polars/_utils/polars_version.py +19 -0
- polars/_utils/pycapsule.py +53 -0
- polars/_utils/scan.py +27 -0
- polars/_utils/serde.py +63 -0
- polars/_utils/slice.py +215 -0
- polars/_utils/udfs.py +1251 -0
- polars/_utils/unstable.py +63 -0
- polars/_utils/various.py +782 -0
- polars/_utils/wrap.py +25 -0
- polars/api.py +370 -0
- polars/catalog/__init__.py +0 -0
- polars/catalog/unity/__init__.py +19 -0
- polars/catalog/unity/client.py +733 -0
- polars/catalog/unity/models.py +152 -0
- polars/config.py +1571 -0
- polars/convert/__init__.py +25 -0
- polars/convert/general.py +1046 -0
- polars/convert/normalize.py +261 -0
- polars/dataframe/__init__.py +5 -0
- polars/dataframe/_html.py +186 -0
- polars/dataframe/frame.py +12582 -0
- polars/dataframe/group_by.py +1067 -0
- polars/dataframe/plotting.py +257 -0
- polars/datatype_expr/__init__.py +5 -0
- polars/datatype_expr/array.py +56 -0
- polars/datatype_expr/datatype_expr.py +304 -0
- polars/datatype_expr/list.py +18 -0
- polars/datatype_expr/struct.py +69 -0
- polars/datatypes/__init__.py +122 -0
- polars/datatypes/_parse.py +195 -0
- polars/datatypes/_utils.py +48 -0
- polars/datatypes/classes.py +1213 -0
- polars/datatypes/constants.py +11 -0
- polars/datatypes/constructor.py +172 -0
- polars/datatypes/convert.py +366 -0
- polars/datatypes/group.py +130 -0
- polars/exceptions.py +230 -0
- polars/expr/__init__.py +7 -0
- polars/expr/array.py +964 -0
- polars/expr/binary.py +346 -0
- polars/expr/categorical.py +306 -0
- polars/expr/datetime.py +2620 -0
- polars/expr/expr.py +11272 -0
- polars/expr/list.py +1408 -0
- polars/expr/meta.py +444 -0
- polars/expr/name.py +321 -0
- polars/expr/string.py +3045 -0
- polars/expr/struct.py +357 -0
- polars/expr/whenthen.py +185 -0
- polars/functions/__init__.py +193 -0
- polars/functions/aggregation/__init__.py +33 -0
- polars/functions/aggregation/horizontal.py +298 -0
- polars/functions/aggregation/vertical.py +341 -0
- polars/functions/as_datatype.py +848 -0
- polars/functions/business.py +138 -0
- polars/functions/col.py +384 -0
- polars/functions/datatype.py +121 -0
- polars/functions/eager.py +524 -0
- polars/functions/escape_regex.py +29 -0
- polars/functions/lazy.py +2751 -0
- polars/functions/len.py +68 -0
- polars/functions/lit.py +210 -0
- polars/functions/random.py +22 -0
- polars/functions/range/__init__.py +19 -0
- polars/functions/range/_utils.py +15 -0
- polars/functions/range/date_range.py +303 -0
- polars/functions/range/datetime_range.py +370 -0
- polars/functions/range/int_range.py +348 -0
- polars/functions/range/linear_space.py +311 -0
- polars/functions/range/time_range.py +287 -0
- polars/functions/repeat.py +301 -0
- polars/functions/whenthen.py +353 -0
- polars/interchange/__init__.py +10 -0
- polars/interchange/buffer.py +77 -0
- polars/interchange/column.py +190 -0
- polars/interchange/dataframe.py +230 -0
- polars/interchange/from_dataframe.py +328 -0
- polars/interchange/protocol.py +303 -0
- polars/interchange/utils.py +170 -0
- polars/io/__init__.py +64 -0
- polars/io/_utils.py +317 -0
- polars/io/avro.py +49 -0
- polars/io/clipboard.py +36 -0
- polars/io/cloud/__init__.py +17 -0
- polars/io/cloud/_utils.py +80 -0
- polars/io/cloud/credential_provider/__init__.py +17 -0
- polars/io/cloud/credential_provider/_builder.py +520 -0
- polars/io/cloud/credential_provider/_providers.py +618 -0
- polars/io/csv/__init__.py +9 -0
- polars/io/csv/_utils.py +38 -0
- polars/io/csv/batched_reader.py +142 -0
- polars/io/csv/functions.py +1495 -0
- polars/io/database/__init__.py +6 -0
- polars/io/database/_arrow_registry.py +70 -0
- polars/io/database/_cursor_proxies.py +147 -0
- polars/io/database/_executor.py +578 -0
- polars/io/database/_inference.py +314 -0
- polars/io/database/_utils.py +144 -0
- polars/io/database/functions.py +516 -0
- polars/io/delta.py +499 -0
- polars/io/iceberg/__init__.py +3 -0
- polars/io/iceberg/_utils.py +697 -0
- polars/io/iceberg/dataset.py +556 -0
- polars/io/iceberg/functions.py +151 -0
- polars/io/ipc/__init__.py +8 -0
- polars/io/ipc/functions.py +514 -0
- polars/io/json/__init__.py +3 -0
- polars/io/json/read.py +101 -0
- polars/io/ndjson.py +332 -0
- polars/io/parquet/__init__.py +17 -0
- polars/io/parquet/field_overwrites.py +140 -0
- polars/io/parquet/functions.py +722 -0
- polars/io/partition.py +491 -0
- polars/io/plugins.py +187 -0
- polars/io/pyarrow_dataset/__init__.py +5 -0
- polars/io/pyarrow_dataset/anonymous_scan.py +109 -0
- polars/io/pyarrow_dataset/functions.py +79 -0
- polars/io/scan_options/__init__.py +5 -0
- polars/io/scan_options/_options.py +59 -0
- polars/io/scan_options/cast_options.py +126 -0
- polars/io/spreadsheet/__init__.py +6 -0
- polars/io/spreadsheet/_utils.py +52 -0
- polars/io/spreadsheet/_write_utils.py +647 -0
- polars/io/spreadsheet/functions.py +1323 -0
- polars/lazyframe/__init__.py +9 -0
- polars/lazyframe/engine_config.py +61 -0
- polars/lazyframe/frame.py +8564 -0
- polars/lazyframe/group_by.py +669 -0
- polars/lazyframe/in_process.py +42 -0
- polars/lazyframe/opt_flags.py +333 -0
- polars/meta/__init__.py +14 -0
- polars/meta/build.py +33 -0
- polars/meta/index_type.py +27 -0
- polars/meta/thread_pool.py +50 -0
- polars/meta/versions.py +120 -0
- polars/ml/__init__.py +0 -0
- polars/ml/torch.py +213 -0
- polars/ml/utilities.py +30 -0
- polars/plugins.py +155 -0
- polars/py.typed +0 -0
- polars/pyproject.toml +96 -0
- polars/schema.py +265 -0
- polars/selectors.py +3117 -0
- polars/series/__init__.py +5 -0
- polars/series/array.py +776 -0
- polars/series/binary.py +254 -0
- polars/series/categorical.py +246 -0
- polars/series/datetime.py +2275 -0
- polars/series/list.py +1087 -0
- polars/series/plotting.py +191 -0
- polars/series/series.py +9197 -0
- polars/series/string.py +2367 -0
- polars/series/struct.py +154 -0
- polars/series/utils.py +191 -0
- polars/sql/__init__.py +7 -0
- polars/sql/context.py +677 -0
- polars/sql/functions.py +139 -0
- polars/string_cache.py +185 -0
- polars/testing/__init__.py +13 -0
- polars/testing/asserts/__init__.py +9 -0
- polars/testing/asserts/frame.py +231 -0
- polars/testing/asserts/series.py +219 -0
- polars/testing/asserts/utils.py +12 -0
- polars/testing/parametric/__init__.py +33 -0
- polars/testing/parametric/profiles.py +107 -0
- polars/testing/parametric/strategies/__init__.py +22 -0
- polars/testing/parametric/strategies/_utils.py +14 -0
- polars/testing/parametric/strategies/core.py +615 -0
- polars/testing/parametric/strategies/data.py +452 -0
- polars/testing/parametric/strategies/dtype.py +436 -0
- polars/testing/parametric/strategies/legacy.py +169 -0
- polars/type_aliases.py +24 -0
- polars_runtime_compat-1.34.0b2.dist-info/METADATA +190 -0
- polars_runtime_compat-1.34.0b2.dist-info/RECORD +203 -0
- polars_runtime_compat-1.34.0b2.dist-info/WHEEL +4 -0
- polars_runtime_compat-1.34.0b2.dist-info/licenses/LICENSE +20 -0
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING
|
|
4
|
+
|
|
5
|
+
import polars.functions as F
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from polars import Expr
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def all(*names: str, ignore_nulls: bool = True) -> Expr:
|
|
12
|
+
"""
|
|
13
|
+
Either return an expression representing all columns, or evaluate a bitwise AND operation.
|
|
14
|
+
|
|
15
|
+
If no arguments are passed, this function is syntactic sugar for `col("*")`.
|
|
16
|
+
Otherwise, this function is syntactic sugar for `col(names).all()`.
|
|
17
|
+
|
|
18
|
+
Parameters
|
|
19
|
+
----------
|
|
20
|
+
*names
|
|
21
|
+
Name(s) of the columns to use in the aggregation.
|
|
22
|
+
ignore_nulls
|
|
23
|
+
|
|
24
|
+
* If set to `True` (default), null values are ignored. If there
|
|
25
|
+
are no non-null values, the output is `True`.
|
|
26
|
+
* If set to `False`, `Kleene logic`_ is used to deal with nulls:
|
|
27
|
+
if the column contains any null values and no `False` values,
|
|
28
|
+
the output is null.
|
|
29
|
+
|
|
30
|
+
.. _Kleene logic: https://en.wikipedia.org/wiki/Three-valued_logic
|
|
31
|
+
|
|
32
|
+
See Also
|
|
33
|
+
--------
|
|
34
|
+
all_horizontal
|
|
35
|
+
|
|
36
|
+
Examples
|
|
37
|
+
--------
|
|
38
|
+
Selecting all columns.
|
|
39
|
+
|
|
40
|
+
>>> df = pl.DataFrame(
|
|
41
|
+
... {
|
|
42
|
+
... "a": [True, False, True],
|
|
43
|
+
... "b": [False, False, False],
|
|
44
|
+
... }
|
|
45
|
+
... )
|
|
46
|
+
>>> df.select(pl.all().sum())
|
|
47
|
+
shape: (1, 2)
|
|
48
|
+
┌─────┬─────┐
|
|
49
|
+
│ a ┆ b │
|
|
50
|
+
│ --- ┆ --- │
|
|
51
|
+
│ u32 ┆ u32 │
|
|
52
|
+
╞═════╪═════╡
|
|
53
|
+
│ 2 ┆ 0 │
|
|
54
|
+
└─────┴─────┘
|
|
55
|
+
|
|
56
|
+
Evaluate bitwise AND for a column.
|
|
57
|
+
|
|
58
|
+
>>> df.select(pl.all("a"))
|
|
59
|
+
shape: (1, 1)
|
|
60
|
+
┌───────┐
|
|
61
|
+
│ a │
|
|
62
|
+
│ --- │
|
|
63
|
+
│ bool │
|
|
64
|
+
╞═══════╡
|
|
65
|
+
│ false │
|
|
66
|
+
└───────┘
|
|
67
|
+
""" # noqa: W505
|
|
68
|
+
if not names:
|
|
69
|
+
return F.col("*")
|
|
70
|
+
|
|
71
|
+
return F.col(*names).all(ignore_nulls=ignore_nulls)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def any(*names: str, ignore_nulls: bool = True) -> Expr | bool | None:
|
|
75
|
+
"""
|
|
76
|
+
Evaluate a bitwise OR operation.
|
|
77
|
+
|
|
78
|
+
Syntactic sugar for `col(names).any()`.
|
|
79
|
+
|
|
80
|
+
See Also
|
|
81
|
+
--------
|
|
82
|
+
any_horizontal
|
|
83
|
+
|
|
84
|
+
Parameters
|
|
85
|
+
----------
|
|
86
|
+
*names
|
|
87
|
+
Name(s) of the columns to use in the aggregation.
|
|
88
|
+
ignore_nulls
|
|
89
|
+
|
|
90
|
+
* If set to `True` (default), null values are ignored. If there
|
|
91
|
+
are no non-null values, the output is `False`.
|
|
92
|
+
* If set to `False`, `Kleene logic`_ is used to deal with nulls:
|
|
93
|
+
if the column contains any null values and no `True` values,
|
|
94
|
+
the output is null.
|
|
95
|
+
|
|
96
|
+
.. _Kleene logic: https://en.wikipedia.org/wiki/Three-valued_logic
|
|
97
|
+
|
|
98
|
+
Examples
|
|
99
|
+
--------
|
|
100
|
+
>>> df = pl.DataFrame(
|
|
101
|
+
... {
|
|
102
|
+
... "a": [True, False, True],
|
|
103
|
+
... "b": [False, False, False],
|
|
104
|
+
... }
|
|
105
|
+
... )
|
|
106
|
+
>>> df.select(pl.any("a"))
|
|
107
|
+
shape: (1, 1)
|
|
108
|
+
┌──────┐
|
|
109
|
+
│ a │
|
|
110
|
+
│ --- │
|
|
111
|
+
│ bool │
|
|
112
|
+
╞══════╡
|
|
113
|
+
│ true │
|
|
114
|
+
└──────┘
|
|
115
|
+
"""
|
|
116
|
+
return F.col(*names).any(ignore_nulls=ignore_nulls)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def max(*names: str) -> Expr:
|
|
120
|
+
"""
|
|
121
|
+
Get the maximum value.
|
|
122
|
+
|
|
123
|
+
Syntactic sugar for `col(names).max()`.
|
|
124
|
+
|
|
125
|
+
Parameters
|
|
126
|
+
----------
|
|
127
|
+
*names
|
|
128
|
+
Name(s) of the columns to use in the aggregation.
|
|
129
|
+
|
|
130
|
+
See Also
|
|
131
|
+
--------
|
|
132
|
+
max_horizontal
|
|
133
|
+
|
|
134
|
+
Examples
|
|
135
|
+
--------
|
|
136
|
+
Get the maximum value of a column.
|
|
137
|
+
|
|
138
|
+
>>> df = pl.DataFrame(
|
|
139
|
+
... {
|
|
140
|
+
... "a": [1, 8, 3],
|
|
141
|
+
... "b": [4, 5, 2],
|
|
142
|
+
... "c": ["foo", "bar", "foo"],
|
|
143
|
+
... }
|
|
144
|
+
... )
|
|
145
|
+
>>> df.select(pl.max("a"))
|
|
146
|
+
shape: (1, 1)
|
|
147
|
+
┌─────┐
|
|
148
|
+
│ a │
|
|
149
|
+
│ --- │
|
|
150
|
+
│ i64 │
|
|
151
|
+
╞═════╡
|
|
152
|
+
│ 8 │
|
|
153
|
+
└─────┘
|
|
154
|
+
|
|
155
|
+
Get the maximum value of multiple columns.
|
|
156
|
+
|
|
157
|
+
>>> df.select(pl.max("^a|b$"))
|
|
158
|
+
shape: (1, 2)
|
|
159
|
+
┌─────┬─────┐
|
|
160
|
+
│ a ┆ b │
|
|
161
|
+
│ --- ┆ --- │
|
|
162
|
+
│ i64 ┆ i64 │
|
|
163
|
+
╞═════╪═════╡
|
|
164
|
+
│ 8 ┆ 5 │
|
|
165
|
+
└─────┴─────┘
|
|
166
|
+
>>> df.select(pl.max("a", "b"))
|
|
167
|
+
shape: (1, 2)
|
|
168
|
+
┌─────┬─────┐
|
|
169
|
+
│ a ┆ b │
|
|
170
|
+
│ --- ┆ --- │
|
|
171
|
+
│ i64 ┆ i64 │
|
|
172
|
+
╞═════╪═════╡
|
|
173
|
+
│ 8 ┆ 5 │
|
|
174
|
+
└─────┴─────┘
|
|
175
|
+
"""
|
|
176
|
+
return F.col(*names).max()
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def min(*names: str) -> Expr:
|
|
180
|
+
"""
|
|
181
|
+
Get the minimum value.
|
|
182
|
+
|
|
183
|
+
Syntactic sugar for `col(names).min()`.
|
|
184
|
+
|
|
185
|
+
Parameters
|
|
186
|
+
----------
|
|
187
|
+
*names
|
|
188
|
+
Name(s) of the columns to use in the aggregation.
|
|
189
|
+
|
|
190
|
+
See Also
|
|
191
|
+
--------
|
|
192
|
+
min_horizontal
|
|
193
|
+
|
|
194
|
+
Examples
|
|
195
|
+
--------
|
|
196
|
+
Get the minimum value of a column.
|
|
197
|
+
|
|
198
|
+
>>> df = pl.DataFrame(
|
|
199
|
+
... {
|
|
200
|
+
... "a": [1, 8, 3],
|
|
201
|
+
... "b": [4, 5, 2],
|
|
202
|
+
... "c": ["foo", "bar", "foo"],
|
|
203
|
+
... }
|
|
204
|
+
... )
|
|
205
|
+
>>> df.select(pl.min("a"))
|
|
206
|
+
shape: (1, 1)
|
|
207
|
+
┌─────┐
|
|
208
|
+
│ a │
|
|
209
|
+
│ --- │
|
|
210
|
+
│ i64 │
|
|
211
|
+
╞═════╡
|
|
212
|
+
│ 1 │
|
|
213
|
+
└─────┘
|
|
214
|
+
|
|
215
|
+
Get the minimum value of multiple columns.
|
|
216
|
+
|
|
217
|
+
>>> df.select(pl.min("^a|b$"))
|
|
218
|
+
shape: (1, 2)
|
|
219
|
+
┌─────┬─────┐
|
|
220
|
+
│ a ┆ b │
|
|
221
|
+
│ --- ┆ --- │
|
|
222
|
+
│ i64 ┆ i64 │
|
|
223
|
+
╞═════╪═════╡
|
|
224
|
+
│ 1 ┆ 2 │
|
|
225
|
+
└─────┴─────┘
|
|
226
|
+
>>> df.select(pl.min("a", "b"))
|
|
227
|
+
shape: (1, 2)
|
|
228
|
+
┌─────┬─────┐
|
|
229
|
+
│ a ┆ b │
|
|
230
|
+
│ --- ┆ --- │
|
|
231
|
+
│ i64 ┆ i64 │
|
|
232
|
+
╞═════╪═════╡
|
|
233
|
+
│ 1 ┆ 2 │
|
|
234
|
+
└─────┴─────┘
|
|
235
|
+
"""
|
|
236
|
+
return F.col(*names).min()
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
def sum(*names: str) -> Expr:
|
|
240
|
+
"""
|
|
241
|
+
Sum all values.
|
|
242
|
+
|
|
243
|
+
Syntactic sugar for `col(name).sum()`.
|
|
244
|
+
|
|
245
|
+
Parameters
|
|
246
|
+
----------
|
|
247
|
+
*names
|
|
248
|
+
Name(s) of the columns to use in the aggregation.
|
|
249
|
+
|
|
250
|
+
Notes
|
|
251
|
+
-----
|
|
252
|
+
If there are no non-null values, then the output is `0`.
|
|
253
|
+
If you would prefer empty sums to return `None`, you can
|
|
254
|
+
use `pl.when(pl.col(name).count()>0).then(pl.sum(name))` instead
|
|
255
|
+
of `pl.sum(name)`.
|
|
256
|
+
|
|
257
|
+
See Also
|
|
258
|
+
--------
|
|
259
|
+
sum_horizontal
|
|
260
|
+
|
|
261
|
+
Examples
|
|
262
|
+
--------
|
|
263
|
+
Sum a column.
|
|
264
|
+
|
|
265
|
+
>>> df = pl.DataFrame(
|
|
266
|
+
... {
|
|
267
|
+
... "a": [1, 2],
|
|
268
|
+
... "b": [3, 4],
|
|
269
|
+
... "c": [5, 6],
|
|
270
|
+
... }
|
|
271
|
+
... )
|
|
272
|
+
>>> df.select(pl.sum("a"))
|
|
273
|
+
shape: (1, 1)
|
|
274
|
+
┌─────┐
|
|
275
|
+
│ a │
|
|
276
|
+
│ --- │
|
|
277
|
+
│ i64 │
|
|
278
|
+
╞═════╡
|
|
279
|
+
│ 3 │
|
|
280
|
+
└─────┘
|
|
281
|
+
|
|
282
|
+
Sum multiple columns.
|
|
283
|
+
|
|
284
|
+
>>> df.select(pl.sum("a", "c"))
|
|
285
|
+
shape: (1, 2)
|
|
286
|
+
┌─────┬─────┐
|
|
287
|
+
│ a ┆ c │
|
|
288
|
+
│ --- ┆ --- │
|
|
289
|
+
│ i64 ┆ i64 │
|
|
290
|
+
╞═════╪═════╡
|
|
291
|
+
│ 3 ┆ 11 │
|
|
292
|
+
└─────┴─────┘
|
|
293
|
+
>>> df.select(pl.sum("^.*[bc]$"))
|
|
294
|
+
shape: (1, 2)
|
|
295
|
+
┌─────┬─────┐
|
|
296
|
+
│ b ┆ c │
|
|
297
|
+
│ --- ┆ --- │
|
|
298
|
+
│ i64 ┆ i64 │
|
|
299
|
+
╞═════╪═════╡
|
|
300
|
+
│ 7 ┆ 11 │
|
|
301
|
+
└─────┴─────┘
|
|
302
|
+
"""
|
|
303
|
+
return F.col(*names).sum()
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
def cum_sum(*names: str) -> Expr:
|
|
307
|
+
"""
|
|
308
|
+
Cumulatively sum all values.
|
|
309
|
+
|
|
310
|
+
Syntactic sugar for `col(names).cum_sum()`.
|
|
311
|
+
|
|
312
|
+
Parameters
|
|
313
|
+
----------
|
|
314
|
+
*names
|
|
315
|
+
Name(s) of the columns to use in the aggregation.
|
|
316
|
+
|
|
317
|
+
See Also
|
|
318
|
+
--------
|
|
319
|
+
cumsum_horizontal
|
|
320
|
+
|
|
321
|
+
Examples
|
|
322
|
+
--------
|
|
323
|
+
>>> df = pl.DataFrame(
|
|
324
|
+
... {
|
|
325
|
+
... "a": [1, 2, 3],
|
|
326
|
+
... "b": [4, 5, 6],
|
|
327
|
+
... }
|
|
328
|
+
... )
|
|
329
|
+
>>> df.select(pl.cum_sum("a"))
|
|
330
|
+
shape: (3, 1)
|
|
331
|
+
┌─────┐
|
|
332
|
+
│ a │
|
|
333
|
+
│ --- │
|
|
334
|
+
│ i64 │
|
|
335
|
+
╞═════╡
|
|
336
|
+
│ 1 │
|
|
337
|
+
│ 3 │
|
|
338
|
+
│ 6 │
|
|
339
|
+
└─────┘
|
|
340
|
+
"""
|
|
341
|
+
return F.col(*names).cum_sum()
|