polars-df 0.10.0 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +27 -0
- data/Cargo.lock +392 -351
- data/README.md +6 -6
- data/ext/polars/Cargo.toml +12 -7
- data/ext/polars/src/batched_csv.rs +53 -52
- data/ext/polars/src/conversion/any_value.rs +261 -0
- data/ext/polars/src/conversion/chunked_array.rs +4 -4
- data/ext/polars/src/conversion/mod.rs +60 -66
- data/ext/polars/src/dataframe/construction.rs +184 -0
- data/ext/polars/src/dataframe/export.rs +48 -0
- data/ext/polars/src/dataframe/general.rs +597 -0
- data/ext/polars/src/dataframe/io.rs +473 -0
- data/ext/polars/src/dataframe/mod.rs +26 -0
- data/ext/polars/src/error.rs +26 -4
- data/ext/polars/src/expr/categorical.rs +0 -10
- data/ext/polars/src/expr/datetime.rs +4 -8
- data/ext/polars/src/expr/general.rs +129 -94
- data/ext/polars/src/expr/mod.rs +2 -2
- data/ext/polars/src/expr/rolling.rs +201 -77
- data/ext/polars/src/expr/string.rs +11 -36
- data/ext/polars/src/functions/eager.rs +10 -10
- data/ext/polars/src/functions/lazy.rs +23 -21
- data/ext/polars/src/functions/range.rs +69 -1
- data/ext/polars/src/interop/mod.rs +1 -0
- data/ext/polars/src/interop/numo/mod.rs +2 -0
- data/ext/polars/src/interop/numo/to_numo_df.rs +23 -0
- data/ext/polars/src/interop/numo/to_numo_series.rs +61 -0
- data/ext/polars/src/lazyframe/mod.rs +135 -136
- data/ext/polars/src/lib.rs +94 -59
- data/ext/polars/src/map/dataframe.rs +2 -2
- data/ext/polars/src/map/lazy.rs +5 -25
- data/ext/polars/src/map/series.rs +7 -1
- data/ext/polars/src/rb_modules.rs +25 -1
- data/ext/polars/src/series/aggregation.rs +49 -30
- data/ext/polars/src/series/arithmetic.rs +21 -11
- data/ext/polars/src/series/construction.rs +56 -38
- data/ext/polars/src/series/export.rs +131 -49
- data/ext/polars/src/series/mod.rs +32 -141
- data/ext/polars/src/sql.rs +3 -1
- data/lib/polars/array_expr.rb +4 -4
- data/lib/polars/batched_csv_reader.rb +11 -5
- data/lib/polars/cat_expr.rb +0 -36
- data/lib/polars/cat_name_space.rb +0 -37
- data/lib/polars/convert.rb +6 -1
- data/lib/polars/data_frame.rb +176 -403
- data/lib/polars/data_types.rb +1 -1
- data/lib/polars/date_time_expr.rb +525 -572
- data/lib/polars/date_time_name_space.rb +263 -460
- data/lib/polars/dynamic_group_by.rb +5 -5
- data/lib/polars/exceptions.rb +7 -0
- data/lib/polars/expr.rb +1394 -243
- data/lib/polars/expr_dispatch.rb +1 -1
- data/lib/polars/functions/aggregation/horizontal.rb +8 -8
- data/lib/polars/functions/as_datatype.rb +63 -40
- data/lib/polars/functions/lazy.rb +63 -14
- data/lib/polars/functions/lit.rb +1 -1
- data/lib/polars/functions/range/date_range.rb +90 -57
- data/lib/polars/functions/range/datetime_range.rb +149 -0
- data/lib/polars/functions/range/int_range.rb +2 -2
- data/lib/polars/functions/range/time_range.rb +141 -0
- data/lib/polars/functions/repeat.rb +1 -1
- data/lib/polars/functions/whenthen.rb +1 -1
- data/lib/polars/group_by.rb +88 -23
- data/lib/polars/io/avro.rb +24 -0
- data/lib/polars/{io.rb → io/csv.rb} +299 -493
- data/lib/polars/io/database.rb +73 -0
- data/lib/polars/io/ipc.rb +247 -0
- data/lib/polars/io/json.rb +29 -0
- data/lib/polars/io/ndjson.rb +80 -0
- data/lib/polars/io/parquet.rb +227 -0
- data/lib/polars/lazy_frame.rb +143 -272
- data/lib/polars/lazy_group_by.rb +100 -3
- data/lib/polars/list_expr.rb +11 -11
- data/lib/polars/list_name_space.rb +5 -1
- data/lib/polars/rolling_group_by.rb +7 -9
- data/lib/polars/series.rb +103 -187
- data/lib/polars/string_expr.rb +78 -102
- data/lib/polars/string_name_space.rb +5 -4
- data/lib/polars/testing.rb +2 -2
- data/lib/polars/utils/constants.rb +9 -0
- data/lib/polars/utils/convert.rb +97 -0
- data/lib/polars/utils/parse.rb +89 -0
- data/lib/polars/utils/various.rb +76 -0
- data/lib/polars/utils/wrap.rb +19 -0
- data/lib/polars/utils.rb +8 -300
- data/lib/polars/version.rb +1 -1
- data/lib/polars/whenthen.rb +6 -6
- data/lib/polars.rb +20 -1
- metadata +28 -7
- data/ext/polars/src/conversion/anyvalue.rs +0 -186
- data/ext/polars/src/dataframe.rs +0 -1208
@@ -46,7 +46,7 @@ impl RbExpr {
|
|
46
46
|
}
|
47
47
|
|
48
48
|
pub fn eq(&self, other: &Self) -> Self {
|
49
|
-
self.clone().
|
49
|
+
self.inner.clone().eq(other.inner.clone()).into()
|
50
50
|
}
|
51
51
|
|
52
52
|
pub fn eq_missing(&self, other: &Self) -> Self {
|
@@ -54,7 +54,7 @@ impl RbExpr {
|
|
54
54
|
}
|
55
55
|
|
56
56
|
pub fn neq(&self, other: &Self) -> Self {
|
57
|
-
self.clone().
|
57
|
+
self.inner.clone().neq(other.inner.clone()).into()
|
58
58
|
}
|
59
59
|
|
60
60
|
pub fn neq_missing(&self, other: &Self) -> Self {
|
@@ -62,112 +62,112 @@ impl RbExpr {
|
|
62
62
|
}
|
63
63
|
|
64
64
|
pub fn gt(&self, other: &Self) -> Self {
|
65
|
-
self.clone().
|
65
|
+
self.inner.clone().gt(other.inner.clone()).into()
|
66
66
|
}
|
67
67
|
|
68
68
|
pub fn gt_eq(&self, other: &Self) -> Self {
|
69
|
-
self.clone().
|
69
|
+
self.inner.clone().gt_eq(other.inner.clone()).into()
|
70
70
|
}
|
71
71
|
|
72
72
|
pub fn lt_eq(&self, other: &Self) -> Self {
|
73
|
-
self.clone().
|
73
|
+
self.inner.clone().lt_eq(other.inner.clone()).into()
|
74
74
|
}
|
75
75
|
|
76
76
|
pub fn lt(&self, other: &Self) -> Self {
|
77
|
-
self.clone().
|
77
|
+
self.inner.clone().lt(other.inner.clone()).into()
|
78
78
|
}
|
79
79
|
|
80
80
|
pub fn alias(&self, name: String) -> Self {
|
81
|
-
self.clone().
|
81
|
+
self.inner.clone().alias(&name).into()
|
82
82
|
}
|
83
83
|
|
84
84
|
pub fn not_(&self) -> Self {
|
85
|
-
self.clone().
|
85
|
+
self.inner.clone().not().into()
|
86
86
|
}
|
87
87
|
|
88
88
|
pub fn is_null(&self) -> Self {
|
89
|
-
self.clone().
|
89
|
+
self.inner.clone().is_null().into()
|
90
90
|
}
|
91
91
|
|
92
92
|
pub fn is_not_null(&self) -> Self {
|
93
|
-
self.clone().
|
93
|
+
self.inner.clone().is_not_null().into()
|
94
94
|
}
|
95
95
|
|
96
96
|
pub fn is_infinite(&self) -> Self {
|
97
|
-
self.clone().
|
97
|
+
self.inner.clone().is_infinite().into()
|
98
98
|
}
|
99
99
|
|
100
100
|
pub fn is_finite(&self) -> Self {
|
101
|
-
self.clone().
|
101
|
+
self.inner.clone().is_finite().into()
|
102
102
|
}
|
103
103
|
|
104
104
|
pub fn is_nan(&self) -> Self {
|
105
|
-
self.clone().
|
105
|
+
self.inner.clone().is_nan().into()
|
106
106
|
}
|
107
107
|
|
108
108
|
pub fn is_not_nan(&self) -> Self {
|
109
|
-
self.clone().
|
109
|
+
self.inner.clone().is_not_nan().into()
|
110
110
|
}
|
111
111
|
|
112
112
|
pub fn min(&self) -> Self {
|
113
|
-
self.clone().
|
113
|
+
self.inner.clone().min().into()
|
114
114
|
}
|
115
115
|
|
116
116
|
pub fn max(&self) -> Self {
|
117
|
-
self.clone().
|
117
|
+
self.inner.clone().max().into()
|
118
118
|
}
|
119
119
|
|
120
120
|
pub fn nan_max(&self) -> Self {
|
121
|
-
self.clone().
|
121
|
+
self.inner.clone().nan_max().into()
|
122
122
|
}
|
123
123
|
|
124
124
|
pub fn nan_min(&self) -> Self {
|
125
|
-
self.clone().
|
125
|
+
self.inner.clone().nan_min().into()
|
126
126
|
}
|
127
127
|
|
128
128
|
pub fn mean(&self) -> Self {
|
129
|
-
self.clone().
|
129
|
+
self.inner.clone().mean().into()
|
130
130
|
}
|
131
131
|
|
132
132
|
pub fn median(&self) -> Self {
|
133
|
-
self.clone().
|
133
|
+
self.inner.clone().median().into()
|
134
134
|
}
|
135
135
|
|
136
136
|
pub fn sum(&self) -> Self {
|
137
|
-
self.clone().
|
137
|
+
self.inner.clone().sum().into()
|
138
138
|
}
|
139
139
|
|
140
140
|
pub fn n_unique(&self) -> Self {
|
141
|
-
self.clone().
|
141
|
+
self.inner.clone().n_unique().into()
|
142
142
|
}
|
143
143
|
|
144
144
|
pub fn arg_unique(&self) -> Self {
|
145
|
-
self.clone().
|
145
|
+
self.inner.clone().arg_unique().into()
|
146
146
|
}
|
147
147
|
|
148
148
|
pub fn unique(&self) -> Self {
|
149
|
-
self.clone().
|
149
|
+
self.inner.clone().unique().into()
|
150
150
|
}
|
151
151
|
|
152
152
|
pub fn unique_stable(&self) -> Self {
|
153
|
-
self.clone().
|
153
|
+
self.inner.clone().unique_stable().into()
|
154
154
|
}
|
155
155
|
|
156
156
|
pub fn first(&self) -> Self {
|
157
|
-
self.clone().
|
157
|
+
self.inner.clone().first().into()
|
158
158
|
}
|
159
159
|
|
160
160
|
pub fn last(&self) -> Self {
|
161
|
-
self.clone().
|
161
|
+
self.inner.clone().last().into()
|
162
162
|
}
|
163
163
|
|
164
164
|
pub fn implode(&self) -> Self {
|
165
|
-
self.clone().
|
165
|
+
self.inner.clone().implode().into()
|
166
166
|
}
|
167
167
|
|
168
168
|
pub fn quantile(&self, quantile: &Self, interpolation: Wrap<QuantileInterpolOptions>) -> Self {
|
169
|
-
self.
|
170
|
-
.
|
169
|
+
self.inner
|
170
|
+
.clone()
|
171
171
|
.quantile(quantile.inner.clone(), interpolation.0)
|
172
172
|
.into()
|
173
173
|
}
|
@@ -239,10 +239,10 @@ impl RbExpr {
|
|
239
239
|
self.inner.clone().len().into()
|
240
240
|
}
|
241
241
|
|
242
|
-
pub fn value_counts(&self,
|
242
|
+
pub fn value_counts(&self, sort: bool, parallel: bool, name: String, normalize: bool) -> Self {
|
243
243
|
self.inner
|
244
244
|
.clone()
|
245
|
-
.value_counts(
|
245
|
+
.value_counts(sort, parallel, name, normalize)
|
246
246
|
.into()
|
247
247
|
}
|
248
248
|
|
@@ -292,10 +292,28 @@ impl RbExpr {
|
|
292
292
|
self.inner.clone().top_k(k.inner.clone()).into()
|
293
293
|
}
|
294
294
|
|
295
|
+
pub fn top_k_by(&self, by: RArray, k: &Self, reverse: Vec<bool>) -> RbResult<Self> {
|
296
|
+
let by = rb_exprs_to_exprs(by)?;
|
297
|
+
Ok(self
|
298
|
+
.inner
|
299
|
+
.clone()
|
300
|
+
.top_k_by(k.inner.clone(), by, reverse)
|
301
|
+
.into())
|
302
|
+
}
|
303
|
+
|
295
304
|
pub fn bottom_k(&self, k: &Self) -> Self {
|
296
305
|
self.inner.clone().bottom_k(k.inner.clone()).into()
|
297
306
|
}
|
298
307
|
|
308
|
+
pub fn bottom_k_by(&self, by: RArray, k: &Self, reverse: Vec<bool>) -> RbResult<Self> {
|
309
|
+
let by = rb_exprs_to_exprs(by)?;
|
310
|
+
Ok(self
|
311
|
+
.inner
|
312
|
+
.clone()
|
313
|
+
.bottom_k_by(k.inner.clone(), by, reverse)
|
314
|
+
.into())
|
315
|
+
}
|
316
|
+
|
299
317
|
pub fn peak_min(&self) -> Self {
|
300
318
|
self.inner.clone().peak_min().into()
|
301
319
|
}
|
@@ -305,11 +323,11 @@ impl RbExpr {
|
|
305
323
|
}
|
306
324
|
|
307
325
|
pub fn arg_max(&self) -> Self {
|
308
|
-
self.clone().
|
326
|
+
self.inner.clone().arg_max().into()
|
309
327
|
}
|
310
328
|
|
311
329
|
pub fn arg_min(&self) -> Self {
|
312
|
-
self.clone().
|
330
|
+
self.inner.clone().arg_min().into()
|
313
331
|
}
|
314
332
|
|
315
333
|
pub fn search_sorted(&self, element: &Self, side: Wrap<SearchSortedSide>) -> Self {
|
@@ -320,21 +338,25 @@ impl RbExpr {
|
|
320
338
|
}
|
321
339
|
|
322
340
|
pub fn gather(&self, idx: &Self) -> Self {
|
323
|
-
self.clone().
|
341
|
+
self.inner.clone().gather(idx.inner.clone()).into()
|
342
|
+
}
|
343
|
+
|
344
|
+
pub fn get(&self, idx: &Self) -> Self {
|
345
|
+
self.inner.clone().get(idx.inner.clone()).into()
|
324
346
|
}
|
325
347
|
|
326
348
|
pub fn sort_by(
|
327
349
|
&self,
|
328
350
|
by: RArray,
|
329
351
|
descending: Vec<bool>,
|
330
|
-
nulls_last: bool
|
352
|
+
nulls_last: Vec<bool>,
|
331
353
|
multithreaded: bool,
|
332
354
|
maintain_order: bool,
|
333
355
|
) -> RbResult<Self> {
|
334
356
|
let by = rb_exprs_to_exprs(by)?;
|
335
357
|
Ok(self
|
336
|
-
.clone()
|
337
358
|
.inner
|
359
|
+
.clone()
|
338
360
|
.sort_by(
|
339
361
|
by,
|
340
362
|
SortMultipleOptions {
|
@@ -348,11 +370,11 @@ impl RbExpr {
|
|
348
370
|
}
|
349
371
|
|
350
372
|
pub fn backward_fill(&self, limit: FillNullLimit) -> Self {
|
351
|
-
self.clone().
|
373
|
+
self.inner.clone().backward_fill(limit).into()
|
352
374
|
}
|
353
375
|
|
354
376
|
pub fn forward_fill(&self, limit: FillNullLimit) -> Self {
|
355
|
-
self.clone().
|
377
|
+
self.inner.clone().forward_fill(limit).into()
|
356
378
|
}
|
357
379
|
|
358
380
|
pub fn shift(&self, n: &Self, fill_value: Option<&Self>) -> Self {
|
@@ -365,7 +387,7 @@ impl RbExpr {
|
|
365
387
|
}
|
366
388
|
|
367
389
|
pub fn fill_null(&self, expr: &Self) -> Self {
|
368
|
-
self.clone().
|
390
|
+
self.inner.clone().fill_null(expr.inner.clone()).into()
|
369
391
|
}
|
370
392
|
|
371
393
|
pub fn fill_null_with_strategy(
|
@@ -398,39 +420,46 @@ impl RbExpr {
|
|
398
420
|
}
|
399
421
|
|
400
422
|
pub fn filter(&self, predicate: &Self) -> Self {
|
401
|
-
self.clone().
|
423
|
+
self.inner.clone().filter(predicate.inner.clone()).into()
|
402
424
|
}
|
403
425
|
|
404
426
|
pub fn reverse(&self) -> Self {
|
405
|
-
self.clone().
|
427
|
+
self.inner.clone().reverse().into()
|
406
428
|
}
|
407
429
|
|
408
430
|
pub fn std(&self, ddof: u8) -> Self {
|
409
|
-
self.clone().
|
431
|
+
self.inner.clone().std(ddof).into()
|
410
432
|
}
|
411
433
|
|
412
434
|
pub fn var(&self, ddof: u8) -> Self {
|
413
|
-
self.clone().
|
435
|
+
self.inner.clone().var(ddof).into()
|
414
436
|
}
|
415
437
|
|
416
438
|
pub fn is_unique(&self) -> Self {
|
417
|
-
self.clone().
|
439
|
+
self.inner.clone().is_unique().into()
|
440
|
+
}
|
441
|
+
|
442
|
+
pub fn is_between(&self, lower: &Self, upper: &Self, closed: Wrap<ClosedInterval>) -> Self {
|
443
|
+
self.inner
|
444
|
+
.clone()
|
445
|
+
.is_between(lower.inner.clone(), upper.inner.clone(), closed.0)
|
446
|
+
.into()
|
418
447
|
}
|
419
448
|
|
420
449
|
pub fn approx_n_unique(&self) -> Self {
|
421
|
-
self.clone().
|
450
|
+
self.inner.clone().approx_n_unique().into()
|
422
451
|
}
|
423
452
|
|
424
453
|
pub fn is_first_distinct(&self) -> Self {
|
425
|
-
self.clone().
|
454
|
+
self.inner.clone().is_first_distinct().into()
|
426
455
|
}
|
427
456
|
|
428
457
|
pub fn is_last_distinct(&self) -> Self {
|
429
|
-
self.clone().
|
458
|
+
self.inner.clone().is_last_distinct().into()
|
430
459
|
}
|
431
460
|
|
432
461
|
pub fn explode(&self) -> Self {
|
433
|
-
self.clone().
|
462
|
+
self.inner.clone().explode().into()
|
434
463
|
}
|
435
464
|
|
436
465
|
pub fn gather_every(&self, n: usize, offset: usize) -> Self {
|
@@ -445,11 +474,11 @@ impl RbExpr {
|
|
445
474
|
}
|
446
475
|
|
447
476
|
pub fn tail(&self, n: Option<usize>) -> Self {
|
448
|
-
self.clone().
|
477
|
+
self.inner.clone().tail(n).into()
|
449
478
|
}
|
450
479
|
|
451
480
|
pub fn head(&self, n: Option<usize>) -> Self {
|
452
|
-
self.clone().
|
481
|
+
self.inner.clone().head(n).into()
|
453
482
|
}
|
454
483
|
|
455
484
|
pub fn slice(&self, offset: &Self, length: &Self) -> Self {
|
@@ -474,15 +503,15 @@ impl RbExpr {
|
|
474
503
|
}
|
475
504
|
|
476
505
|
pub fn round(&self, decimals: u32) -> Self {
|
477
|
-
self.clone().
|
506
|
+
self.inner.clone().round(decimals).into()
|
478
507
|
}
|
479
508
|
|
480
509
|
pub fn floor(&self) -> Self {
|
481
|
-
self.clone().
|
510
|
+
self.inner.clone().floor().into()
|
482
511
|
}
|
483
512
|
|
484
513
|
pub fn ceil(&self) -> Self {
|
485
|
-
self.clone().
|
514
|
+
self.inner.clone().ceil().into()
|
486
515
|
}
|
487
516
|
|
488
517
|
pub fn clip(&self, min: Option<&Self>, max: Option<&Self>) -> Self {
|
@@ -497,120 +526,126 @@ impl RbExpr {
|
|
497
526
|
}
|
498
527
|
|
499
528
|
pub fn abs(&self) -> Self {
|
500
|
-
self.clone().
|
529
|
+
self.inner.clone().abs().into()
|
501
530
|
}
|
502
531
|
|
503
532
|
pub fn sin(&self) -> Self {
|
504
|
-
self.clone().
|
533
|
+
self.inner.clone().sin().into()
|
505
534
|
}
|
506
535
|
|
507
536
|
pub fn cos(&self) -> Self {
|
508
|
-
self.clone().
|
537
|
+
self.inner.clone().cos().into()
|
509
538
|
}
|
510
539
|
|
511
540
|
pub fn tan(&self) -> Self {
|
512
|
-
self.clone().
|
541
|
+
self.inner.clone().tan().into()
|
513
542
|
}
|
514
543
|
|
515
544
|
pub fn arcsin(&self) -> Self {
|
516
|
-
self.clone().
|
545
|
+
self.inner.clone().arcsin().into()
|
517
546
|
}
|
518
547
|
|
519
548
|
pub fn arccos(&self) -> Self {
|
520
|
-
self.clone().
|
549
|
+
self.inner.clone().arccos().into()
|
521
550
|
}
|
522
551
|
|
523
552
|
pub fn arctan(&self) -> Self {
|
524
|
-
self.clone().
|
553
|
+
self.inner.clone().arctan().into()
|
525
554
|
}
|
526
555
|
|
527
556
|
pub fn sinh(&self) -> Self {
|
528
|
-
self.clone().
|
557
|
+
self.inner.clone().sinh().into()
|
529
558
|
}
|
530
559
|
|
531
560
|
pub fn cosh(&self) -> Self {
|
532
|
-
self.clone().
|
561
|
+
self.inner.clone().cosh().into()
|
533
562
|
}
|
534
563
|
|
535
564
|
pub fn tanh(&self) -> Self {
|
536
|
-
self.clone().
|
565
|
+
self.inner.clone().tanh().into()
|
537
566
|
}
|
538
567
|
|
539
568
|
pub fn arcsinh(&self) -> Self {
|
540
|
-
self.clone().
|
569
|
+
self.inner.clone().arcsinh().into()
|
541
570
|
}
|
542
571
|
|
543
572
|
pub fn arccosh(&self) -> Self {
|
544
|
-
self.clone().
|
573
|
+
self.inner.clone().arccosh().into()
|
545
574
|
}
|
546
575
|
|
547
576
|
pub fn arctanh(&self) -> Self {
|
548
|
-
self.clone().
|
577
|
+
self.inner.clone().arctanh().into()
|
549
578
|
}
|
550
579
|
|
551
580
|
pub fn sign(&self) -> Self {
|
552
|
-
self.clone().
|
581
|
+
self.inner.clone().sign().into()
|
553
582
|
}
|
554
583
|
|
555
584
|
pub fn is_duplicated(&self) -> Self {
|
556
|
-
self.clone().
|
585
|
+
self.inner.clone().is_duplicated().into()
|
557
586
|
}
|
558
587
|
|
559
588
|
pub fn over(&self, partition_by: RArray) -> RbResult<Self> {
|
560
589
|
let partition_by = rb_exprs_to_exprs(partition_by)?;
|
561
|
-
Ok(self.clone().
|
590
|
+
Ok(self.inner.clone().over(partition_by).into())
|
562
591
|
}
|
563
592
|
|
564
593
|
pub fn _and(&self, expr: &Self) -> Self {
|
565
|
-
self.clone().
|
594
|
+
self.inner.clone().and(expr.inner.clone()).into()
|
566
595
|
}
|
567
596
|
|
568
597
|
pub fn _xor(&self, expr: &Self) -> Self {
|
569
|
-
self.clone().
|
598
|
+
self.inner.clone().xor(expr.inner.clone()).into()
|
570
599
|
}
|
571
600
|
|
572
601
|
pub fn _or(&self, expr: &Self) -> Self {
|
573
|
-
self.clone().
|
602
|
+
self.inner.clone().or(expr.inner.clone()).into()
|
574
603
|
}
|
575
604
|
|
576
605
|
pub fn is_in(&self, expr: &Self) -> Self {
|
577
|
-
self.clone().
|
606
|
+
self.inner.clone().is_in(expr.inner.clone()).into()
|
578
607
|
}
|
579
608
|
|
580
609
|
pub fn repeat_by(&self, by: &Self) -> Self {
|
581
|
-
self.clone().
|
610
|
+
self.inner.clone().repeat_by(by.inner.clone()).into()
|
582
611
|
}
|
583
612
|
|
584
613
|
pub fn pow(&self, exponent: &Self) -> Self {
|
585
|
-
self.clone().
|
614
|
+
self.inner.clone().pow(exponent.inner.clone()).into()
|
586
615
|
}
|
587
616
|
|
588
617
|
pub fn cum_sum(&self, reverse: bool) -> Self {
|
589
|
-
self.clone().
|
618
|
+
self.inner.clone().cum_sum(reverse).into()
|
590
619
|
}
|
591
620
|
|
592
621
|
pub fn cum_max(&self, reverse: bool) -> Self {
|
593
|
-
self.clone().
|
622
|
+
self.inner.clone().cum_max(reverse).into()
|
594
623
|
}
|
595
624
|
|
596
625
|
pub fn cum_min(&self, reverse: bool) -> Self {
|
597
|
-
self.clone().
|
626
|
+
self.inner.clone().cum_min(reverse).into()
|
598
627
|
}
|
599
628
|
|
600
629
|
pub fn cum_prod(&self, reverse: bool) -> Self {
|
601
|
-
self.clone().
|
630
|
+
self.inner.clone().cum_prod(reverse).into()
|
602
631
|
}
|
603
632
|
|
604
633
|
pub fn product(&self) -> Self {
|
605
|
-
self.clone().
|
634
|
+
self.inner.clone().product().into()
|
606
635
|
}
|
607
636
|
|
608
637
|
pub fn shrink_dtype(&self) -> Self {
|
609
638
|
self.inner.clone().shrink_dtype().into()
|
610
639
|
}
|
611
640
|
|
612
|
-
pub fn
|
613
|
-
|
641
|
+
pub fn map_batches(
|
642
|
+
&self,
|
643
|
+
lambda: Value,
|
644
|
+
output_type: Option<Wrap<DataType>>,
|
645
|
+
agg_list: bool,
|
646
|
+
is_elementwise: bool,
|
647
|
+
) -> Self {
|
648
|
+
map_single(self, lambda, output_type, agg_list, is_elementwise)
|
614
649
|
}
|
615
650
|
|
616
651
|
pub fn dot(&self, other: &Self) -> Self {
|
@@ -682,7 +717,7 @@ impl RbExpr {
|
|
682
717
|
}
|
683
718
|
|
684
719
|
pub fn reshape(&self, dims: Vec<i64>) -> Self {
|
685
|
-
self.inner.clone().reshape(&dims).into()
|
720
|
+
self.inner.clone().reshape(&dims, NestedType::Array).into()
|
686
721
|
}
|
687
722
|
|
688
723
|
pub fn cum_count(&self, reverse: bool) -> Self {
|
@@ -690,14 +725,7 @@ impl RbExpr {
|
|
690
725
|
}
|
691
726
|
|
692
727
|
pub fn to_physical(&self) -> Self {
|
693
|
-
self.inner
|
694
|
-
.clone()
|
695
|
-
.map(
|
696
|
-
|s| Ok(Some(s.to_physical_repr().into_owned())),
|
697
|
-
GetOutput::map_dtype(|dt| dt.to_physical()),
|
698
|
-
)
|
699
|
-
.with_fmt("to_physical")
|
700
|
-
.into()
|
728
|
+
self.inner.clone().to_physical().into()
|
701
729
|
}
|
702
730
|
|
703
731
|
pub fn shuffle(&self, seed: Option<u64>) -> Self {
|
@@ -833,7 +861,14 @@ impl RbExpr {
|
|
833
861
|
self.inner.clone().set_sorted_flag(is_sorted).into()
|
834
862
|
}
|
835
863
|
|
836
|
-
pub fn replace(
|
864
|
+
pub fn replace(&self, old: &Self, new: &Self) -> Self {
|
865
|
+
self.inner
|
866
|
+
.clone()
|
867
|
+
.replace(old.inner.clone(), new.inner.clone())
|
868
|
+
.into()
|
869
|
+
}
|
870
|
+
|
871
|
+
pub fn replace_strict(
|
837
872
|
&self,
|
838
873
|
old: &Self,
|
839
874
|
new: &Self,
|
@@ -842,7 +877,7 @@ impl RbExpr {
|
|
842
877
|
) -> Self {
|
843
878
|
self.inner
|
844
879
|
.clone()
|
845
|
-
.
|
880
|
+
.replace_strict(
|
846
881
|
old.inner.clone(),
|
847
882
|
new.inner.clone(),
|
848
883
|
default.map(|e| e.inner.clone()),
|
data/ext/polars/src/expr/mod.rs
CHANGED
@@ -29,8 +29,8 @@ impl From<Expr> for RbExpr {
|
|
29
29
|
|
30
30
|
pub fn rb_exprs_to_exprs(rb_exprs: RArray) -> RbResult<Vec<Expr>> {
|
31
31
|
let mut exprs = Vec::new();
|
32
|
-
for item in rb_exprs.
|
33
|
-
exprs.push(<&RbExpr>::try_convert(item
|
32
|
+
for item in rb_exprs.into_iter() {
|
33
|
+
exprs.push(<&RbExpr>::try_convert(item)?.inner.clone());
|
34
34
|
}
|
35
35
|
Ok(exprs)
|
36
36
|
}
|