polars-df 0.1.3 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Cargo.lock +142 -11
- data/Cargo.toml +5 -0
- data/ext/polars/Cargo.toml +17 -1
- data/ext/polars/src/apply/dataframe.rs +292 -0
- data/ext/polars/src/apply/mod.rs +254 -0
- data/ext/polars/src/apply/series.rs +1173 -0
- data/ext/polars/src/conversion.rs +180 -5
- data/ext/polars/src/dataframe.rs +146 -1
- data/ext/polars/src/error.rs +12 -0
- data/ext/polars/src/lazy/apply.rs +34 -2
- data/ext/polars/src/lazy/dataframe.rs +74 -3
- data/ext/polars/src/lazy/dsl.rs +136 -0
- data/ext/polars/src/lib.rs +199 -1
- data/ext/polars/src/list_construction.rs +100 -0
- data/ext/polars/src/series.rs +331 -0
- data/ext/polars/src/utils.rs +25 -0
- data/lib/polars/cat_name_space.rb +54 -0
- data/lib/polars/convert.rb +100 -0
- data/lib/polars/data_frame.rb +1558 -60
- data/lib/polars/date_time_expr.rb +2 -2
- data/lib/polars/date_time_name_space.rb +1484 -0
- data/lib/polars/dynamic_group_by.rb +49 -0
- data/lib/polars/expr.rb +4072 -107
- data/lib/polars/expr_dispatch.rb +8 -0
- data/lib/polars/functions.rb +192 -3
- data/lib/polars/group_by.rb +44 -3
- data/lib/polars/io.rb +20 -4
- data/lib/polars/lazy_frame.rb +800 -26
- data/lib/polars/lazy_functions.rb +687 -43
- data/lib/polars/lazy_group_by.rb +1 -0
- data/lib/polars/list_expr.rb +502 -5
- data/lib/polars/list_name_space.rb +346 -0
- data/lib/polars/rolling_group_by.rb +35 -0
- data/lib/polars/series.rb +934 -62
- data/lib/polars/string_expr.rb +189 -13
- data/lib/polars/string_name_space.rb +690 -0
- data/lib/polars/struct_name_space.rb +64 -0
- data/lib/polars/utils.rb +44 -0
- data/lib/polars/version.rb +1 -1
- data/lib/polars.rb +14 -1
- metadata +15 -3
@@ -0,0 +1,49 @@
|
|
1
|
+
module Polars
|
2
|
+
# A dynamic grouper.
|
3
|
+
#
|
4
|
+
# This has an `.agg` method which allows you to run all polars expressions in a
|
5
|
+
# groupby context.
|
6
|
+
class DynamicGroupBy
|
7
|
+
def initialize(
|
8
|
+
df,
|
9
|
+
index_column,
|
10
|
+
every,
|
11
|
+
period,
|
12
|
+
offset,
|
13
|
+
truncate,
|
14
|
+
include_boundaries,
|
15
|
+
closed,
|
16
|
+
by
|
17
|
+
)
|
18
|
+
period = Utils._timedelta_to_pl_duration(period)
|
19
|
+
offset = Utils._timedelta_to_pl_duration(offset)
|
20
|
+
every = Utils._timedelta_to_pl_duration(every)
|
21
|
+
|
22
|
+
@df = df
|
23
|
+
@time_column = index_column
|
24
|
+
@every = every
|
25
|
+
@period = period
|
26
|
+
@offset = offset
|
27
|
+
@truncate = truncate
|
28
|
+
@include_boundaries = include_boundaries
|
29
|
+
@closed = closed
|
30
|
+
@by = by
|
31
|
+
end
|
32
|
+
|
33
|
+
def agg(aggs)
|
34
|
+
@df.lazy
|
35
|
+
.groupby_dynamic(
|
36
|
+
@time_column,
|
37
|
+
every: @every,
|
38
|
+
period: @period,
|
39
|
+
offset: @offset,
|
40
|
+
truncate: @truncate,
|
41
|
+
include_boundaries: @include_boundaries,
|
42
|
+
closed: @closed,
|
43
|
+
by: @by
|
44
|
+
)
|
45
|
+
.agg(aggs)
|
46
|
+
.collect(no_optimization: true, string_cache: false)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|