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/parsing.rs
7890 views
1
// --8<-- [start:setup]
2
use polars::io::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 df = CsvReadOptions::default()
9
.map_parse_options(|parse_options| parse_options.with_try_parse_dates(true))
10
.try_into_reader_with_file_path(Some("docs/assets/data/apple_stock.csv".into()))
11
.unwrap()
12
.finish()
13
.unwrap();
14
println!("{}", &df);
15
// --8<-- [end:df]
16
17
// --8<-- [start:cast]
18
let df = CsvReadOptions::default()
19
.map_parse_options(|parse_options| parse_options.with_try_parse_dates(false))
20
.try_into_reader_with_file_path(Some("docs/assets/data/apple_stock.csv".into()))
21
.unwrap()
22
.finish()
23
.unwrap();
24
let df = df
25
.lazy()
26
.with_columns([col("Date").str().to_date(StrptimeOptions::default())])
27
.collect()?;
28
println!("{}", &df);
29
// --8<-- [end:cast]
30
31
// --8<-- [start:df3]
32
let df_with_year = df
33
.clone()
34
.lazy()
35
.with_columns([col("Date").dt().year().alias("year")])
36
.collect()?;
37
println!("{}", &df_with_year);
38
// --8<-- [end:df3]
39
40
// --8<-- [start:extract]
41
let df_with_year = df
42
.lazy()
43
.with_columns([col("Date").dt().year().alias("year")])
44
.collect()?;
45
println!("{}", &df_with_year);
46
// --8<-- [end:extract]
47
48
// --8<-- [start:mixed]
49
let data = [
50
"2021-03-27T00:00:00+0100",
51
"2021-03-28T00:00:00+0100",
52
"2021-03-29T00:00:00+0200",
53
"2021-03-30T00:00:00+0200",
54
];
55
let q = col("date")
56
.str()
57
.to_datetime(
58
Some(TimeUnit::Microseconds),
59
None,
60
StrptimeOptions {
61
format: Some("%Y-%m-%dT%H:%M:%S%z".into()),
62
..Default::default()
63
},
64
lit("raise"),
65
)
66
.dt()
67
.convert_time_zone(
68
TimeZone::opt_try_new(Some("Europe/Brussels"))
69
.unwrap()
70
.unwrap(),
71
);
72
let mixed_parsed = df!("date" => &data)?.lazy().select([q]).collect()?;
73
74
println!("{}", &mixed_parsed);
75
// --8<-- [end:mixed]
76
77
Ok(())
78
}
79
80