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