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_diff.py
6939 views
1
import pytest
2
3
import polars as pl
4
from polars.exceptions import ShapeError
5
from polars.testing import assert_frame_equal
6
7
8
def test_diff_duration_dtype() -> None:
9
data = ["2022-01-01", "2022-01-02", "2022-01-03", "2022-01-03"]
10
df = pl.Series("date", data).str.to_date("%Y-%m-%d").to_frame()
11
12
result = df.select(pl.col("date").diff() < pl.duration(days=1))
13
14
expected = pl.Series("date", [None, False, False, True]).to_frame()
15
assert_frame_equal(result, expected)
16
17
18
def test_diff_scalarity() -> None:
19
df = pl.DataFrame(
20
{
21
"a": [1, 2, 3, 2, 2, 3, 0],
22
"n": [1, 3, 2, 4, 5, 1, 1],
23
}
24
)
25
26
with pytest.raises(ShapeError, match="'n' must be a scalar value"):
27
df.select(pl.col("a").diff("n"))
28
29
result = df.select(pl.col("a").diff(pl.col("n").mean().cast(pl.Int32)))
30
expected = pl.DataFrame({"a": [None, None, 2, 0, -1, 1, -2]})
31
assert_frame_equal(result, expected)
32
33
result = df.select(pl.col("a").diff(2))
34
assert_frame_equal(result, expected)
35
36