Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/docs/source/src/rust/user-guide/transformations/time-series/resampling.rs
7890 views
1
// --8<-- [start:setup]
2
use chrono::prelude::*;
3
use polars::prelude::*;
4
// --8<-- [end:setup]
5
6
fn main() -> Result<(), Box<dyn std::error::Error>> {
7
// --8<-- [start:df]
8
let time = polars::time::date_range(
9
"time".into(),
10
NaiveDate::from_ymd_opt(2021, 12, 16)
11
.unwrap()
12
.and_hms_opt(0, 0, 0)
13
.unwrap(),
14
NaiveDate::from_ymd_opt(2021, 12, 16)
15
.unwrap()
16
.and_hms_opt(3, 0, 0)
17
.unwrap(),
18
Duration::parse("30m"),
19
ClosedWindow::Both,
20
TimeUnit::Milliseconds,
21
None,
22
)?;
23
let df = df!(
24
"time" => time,
25
"groups" => &["a", "a", "a", "b", "b", "a", "a"],
26
"values" => &[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0],
27
)?;
28
println!("{}", &df);
29
// --8<-- [end:df]
30
31
// --8<-- [start:upsample]
32
let out1 = df
33
.upsample::<[String; 0]>([], "time", Duration::parse("15m"))?
34
.fill_null(FillNullStrategy::Forward(None))?;
35
println!("{}", &out1);
36
// --8<-- [end:upsample]
37
38
// --8<-- [start:upsample2]
39
let out2 = df
40
.upsample::<[String; 0]>([], "time", Duration::parse("15m"))?
41
.lazy()
42
.with_columns([col("values").interpolate(InterpolationMethod::Linear)])
43
.collect()?
44
.fill_null(FillNullStrategy::Forward(None))?;
45
println!("{}", &out2);
46
// --8<-- [end:upsample2]
47
Ok(())
48
}
49
50