polars-df 0.2.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -24,7 +24,6 @@ module Polars
24
24
  # # │ u32 │
25
25
  # # ╞═════╡
26
26
  # # │ 2 │
27
- # # ├╌╌╌╌╌┤
28
27
  # # │ 1 │
29
28
  # # └─────┘
30
29
  def lengths
@@ -46,7 +45,6 @@ module Polars
46
45
  # # │ i64 │
47
46
  # # ╞════════╡
48
47
  # # │ 1 │
49
- # # ├╌╌╌╌╌╌╌╌┤
50
48
  # # │ 5 │
51
49
  # # └────────┘
52
50
  def sum
@@ -68,7 +66,6 @@ module Polars
68
66
  # # │ i64 │
69
67
  # # ╞════════╡
70
68
  # # │ 1 │
71
- # # ├╌╌╌╌╌╌╌╌┤
72
69
  # # │ 3 │
73
70
  # # └────────┘
74
71
  def max
@@ -90,7 +87,6 @@ module Polars
90
87
  # # │ i64 │
91
88
  # # ╞════════╡
92
89
  # # │ 1 │
93
- # # ├╌╌╌╌╌╌╌╌┤
94
90
  # # │ 2 │
95
91
  # # └────────┘
96
92
  def min
@@ -112,7 +108,6 @@ module Polars
112
108
  # # │ f64 │
113
109
  # # ╞════════╡
114
110
  # # │ 1.0 │
115
- # # ├╌╌╌╌╌╌╌╌┤
116
111
  # # │ 2.5 │
117
112
  # # └────────┘
118
113
  def mean
@@ -138,7 +133,6 @@ module Polars
138
133
  # # │ list[i64] │
139
134
  # # ╞═══════════╡
140
135
  # # │ [1, 2, 3] │
141
- # # ├╌╌╌╌╌╌╌╌╌╌╌┤
142
136
  # # │ [1, 2, 9] │
143
137
  # # └───────────┘
144
138
  def sort(reverse: false)
@@ -164,7 +158,6 @@ module Polars
164
158
  # # │ list[i64] │
165
159
  # # ╞═══════════╡
166
160
  # # │ [1, 2, 3] │
167
- # # ├╌╌╌╌╌╌╌╌╌╌╌┤
168
161
  # # │ [2, 1, 9] │
169
162
  # # └───────────┘
170
163
  def reverse
@@ -218,7 +211,6 @@ module Polars
218
211
  # # │ list[str] │
219
212
  # # ╞═════════════════╡
220
213
  # # │ ["a", "b", "c"] │
221
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
222
214
  # # │ ["x", "y", "z"] │
223
215
  # # └─────────────────┘
224
216
  def concat(other)
@@ -258,9 +250,7 @@ module Polars
258
250
  # # │ i64 │
259
251
  # # ╞══════╡
260
252
  # # │ 3 │
261
- # # ├╌╌╌╌╌╌┤
262
253
  # # │ null │
263
- # # ├╌╌╌╌╌╌┤
264
254
  # # │ 1 │
265
255
  # # └──────┘
266
256
  def get(index)
@@ -290,9 +280,7 @@ module Polars
290
280
  # # │ i64 │
291
281
  # # ╞══════╡
292
282
  # # │ 3 │
293
- # # ├╌╌╌╌╌╌┤
294
283
  # # │ null │
295
- # # ├╌╌╌╌╌╌┤
296
284
  # # │ 1 │
297
285
  # # └──────┘
298
286
  def first
@@ -314,9 +302,7 @@ module Polars
314
302
  # # │ i64 │
315
303
  # # ╞══════╡
316
304
  # # │ 1 │
317
- # # ├╌╌╌╌╌╌┤
318
305
  # # │ null │
319
- # # ├╌╌╌╌╌╌┤
320
306
  # # │ 2 │
321
307
  # # └──────┘
322
308
  def last
@@ -341,9 +327,7 @@ module Polars
341
327
  # # │ bool │
342
328
  # # ╞═══════╡
343
329
  # # │ true │
344
- # # ├╌╌╌╌╌╌╌┤
345
330
  # # │ false │
346
- # # ├╌╌╌╌╌╌╌┤
347
331
  # # │ true │
348
332
  # # └───────┘
349
333
  def contains(item)
@@ -370,7 +354,6 @@ module Polars
370
354
  # # │ str │
371
355
  # # ╞═══════╡
372
356
  # # │ a b c │
373
- # # ├╌╌╌╌╌╌╌┤
374
357
  # # │ x y │
375
358
  # # └───────┘
376
359
  def join(separator)
@@ -396,7 +379,6 @@ module Polars
396
379
  # # │ u32 │
397
380
  # # ╞═════╡
398
381
  # # │ 0 │
399
- # # ├╌╌╌╌╌┤
400
382
  # # │ 1 │
401
383
  # # └─────┘
402
384
  def arg_min
@@ -422,7 +404,6 @@ module Polars
422
404
  # # │ u32 │
423
405
  # # ╞═════╡
424
406
  # # │ 1 │
425
- # # ├╌╌╌╌╌┤
426
407
  # # │ 0 │
427
408
  # # └─────┘
428
409
  def arg_max
@@ -443,7 +424,7 @@ module Polars
443
424
  # s.arr.diff
444
425
  # # =>
445
426
  # # shape: (2,)
446
- # # Series: 'a' [list]
427
+ # # Series: 'a' [list[i64]]
447
428
  # # [
448
429
  # # [null, 1, ... 1]
449
430
  # # [null, -8, -1]
@@ -464,7 +445,7 @@ module Polars
464
445
  # s.arr.shift
465
446
  # # =>
466
447
  # # shape: (2,)
467
- # # Series: 'a' [list]
448
+ # # Series: 'a' [list[i64]]
468
449
  # # [
469
450
  # # [null, 1, ... 3]
470
451
  # # [null, 10, 2]
@@ -488,7 +469,7 @@ module Polars
488
469
  # s.arr.slice(1, 2)
489
470
  # # =>
490
471
  # # shape: (2,)
491
- # # Series: 'a' [list]
472
+ # # Series: 'a' [list[i64]]
492
473
  # # [
493
474
  # # [2, 3]
494
475
  # # [2, 1]
@@ -511,7 +492,7 @@ module Polars
511
492
  # s.arr.head(2)
512
493
  # # =>
513
494
  # # shape: (2,)
514
- # # Series: 'a' [list]
495
+ # # Series: 'a' [list[i64]]
515
496
  # # [
516
497
  # # [1, 2]
517
498
  # # [10, 2]
@@ -532,7 +513,7 @@ module Polars
532
513
  # s.arr.tail(2)
533
514
  # # =>
534
515
  # # shape: (2,)
535
- # # Series: 'a' [list]
516
+ # # Series: 'a' [list[i64]]
536
517
  # # [
537
518
  # # [3, 4]
538
519
  # # [2, 1]
@@ -563,7 +544,6 @@ module Polars
563
544
  # # │ struct[3] │
564
545
  # # ╞════════════╡
565
546
  # # │ {1,2,3} │
566
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┤
567
547
  # # │ {1,2,null} │
568
548
  # # └────────────┘
569
549
  def to_struct(n_field_strategy: "first_non_null", name_generator: nil)
@@ -598,9 +578,7 @@ module Polars
598
578
  # # │ i64 ┆ i64 ┆ list[f32] │
599
579
  # # ╞═════╪═════╪════════════╡
600
580
  # # │ 1 ┆ 4 ┆ [1.0, 2.0] │
601
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
602
581
  # # │ 8 ┆ 5 ┆ [2.0, 1.0] │
603
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
604
582
  # # │ 3 ┆ 2 ┆ [2.0, 1.0] │
605
583
  # # └─────┴─────┴────────────┘
606
584
  def eval(expr, parallel: false)
@@ -183,7 +183,7 @@ module Polars
183
183
  # s.arr.diff
184
184
  # # =>
185
185
  # # shape: (2,)
186
- # # Series: 'a' [list]
186
+ # # Series: 'a' [list[i64]]
187
187
  # # [
188
188
  # # [null, 1, ... 1]
189
189
  # # [null, -8, -1]
@@ -204,7 +204,7 @@ module Polars
204
204
  # s.arr.shift
205
205
  # # =>
206
206
  # # shape: (2,)
207
- # # Series: 'a' [list]
207
+ # # Series: 'a' [list[i64]]
208
208
  # # [
209
209
  # # [null, 1, ... 3]
210
210
  # # [null, 10, 2]
@@ -228,7 +228,7 @@ module Polars
228
228
  # s.arr.slice(1, 2)
229
229
  # # =>
230
230
  # # shape: (2,)
231
- # # Series: 'a' [list]
231
+ # # Series: 'a' [list[i64]]
232
232
  # # [
233
233
  # # [2, 3]
234
234
  # # [2, 1]
@@ -249,7 +249,7 @@ module Polars
249
249
  # s.arr.head(2)
250
250
  # # =>
251
251
  # # shape: (2,)
252
- # # Series: 'a' [list]
252
+ # # Series: 'a' [list[i64]]
253
253
  # # [
254
254
  # # [1, 2]
255
255
  # # [10, 2]
@@ -270,7 +270,7 @@ module Polars
270
270
  # s.arr.tail(2)
271
271
  # # =>
272
272
  # # shape: (2,)
273
- # # Series: 'a' [list]
273
+ # # Series: 'a' [list[i64]]
274
274
  # # [
275
275
  # # [3, 4]
276
276
  # # [2, 1]
@@ -300,7 +300,6 @@ module Polars
300
300
  # # │ struct[3] │
301
301
  # # ╞════════════╡
302
302
  # # │ {1,2,3} │
303
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┤
304
303
  # # │ {1,2,null} │
305
304
  # # └────────────┘
306
305
  def to_struct(n_field_strategy: "first_non_null", name_generator: nil)
@@ -334,9 +333,7 @@ module Polars
334
333
  # # │ i64 ┆ i64 ┆ list[f32] │
335
334
  # # ╞═════╪═════╪════════════╡
336
335
  # # │ 1 ┆ 4 ┆ [1.0, 2.0] │
337
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
338
336
  # # │ 8 ┆ 5 ┆ [2.0, 1.0] │
339
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
340
337
  # # │ 3 ┆ 2 ┆ [2.0, 1.0] │
341
338
  # # └─────┴─────┴────────────┘
342
339
  def eval(expr, parallel: false)
data/lib/polars/series.rb CHANGED
@@ -259,6 +259,17 @@ module Polars
259
259
  0 - self
260
260
  end
261
261
 
262
+ # Returns an enumerator.
263
+ #
264
+ # @return [Object]
265
+ def each
266
+ return to_enum(:each) unless block_given?
267
+
268
+ length.times do |i|
269
+ yield self[i]
270
+ end
271
+ end
272
+
262
273
  # Returns elements of the Series.
263
274
  #
264
275
  # @return [Object]
@@ -432,15 +443,10 @@ module Polars
432
443
  # # │ str ┆ f64 │
433
444
  # # ╞════════════╪══════════╡
434
445
  # # │ min ┆ 1.0 │
435
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
436
446
  # # │ max ┆ 5.0 │
437
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
438
447
  # # │ null_count ┆ 0.0 │
439
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
440
448
  # # │ mean ┆ 3.0 │
441
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
442
449
  # # │ std ┆ 1.581139 │
443
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
444
450
  # # │ count ┆ 5.0 │
445
451
  # # └────────────┴──────────┘
446
452
  #
@@ -455,9 +461,7 @@ module Polars
455
461
  # # │ str ┆ i64 │
456
462
  # # ╞════════════╪═══════╡
457
463
  # # │ unique ┆ 4 │
458
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
459
464
  # # │ null_count ┆ 1 │
460
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
461
465
  # # │ count ┆ 5 │
462
466
  # # └────────────┴───────┘
463
467
  def describe
@@ -660,13 +664,11 @@ module Polars
660
664
  # # │ u8 ┆ u8 ┆ u8 │
661
665
  # # ╞═════╪═════╪═════╡
662
666
  # # │ 1 ┆ 0 ┆ 0 │
663
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
664
667
  # # │ 0 ┆ 1 ┆ 0 │
665
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
666
668
  # # │ 0 ┆ 0 ┆ 1 │
667
669
  # # └─────┴─────┴─────┘
668
- def to_dummies
669
- Utils.wrap_df(_s.to_dummies)
670
+ def to_dummies(separator: "_")
671
+ Utils.wrap_df(_s.to_dummies(separator))
670
672
  end
671
673
 
672
674
  # Count the unique values in a Series.
@@ -687,9 +689,7 @@ module Polars
687
689
  # # │ i64 ┆ u32 │
688
690
  # # ╞═════╪════════╡
689
691
  # # │ 1 ┆ 1 │
690
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
691
692
  # # │ 2 ┆ 2 │
692
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
693
693
  # # │ 3 ┆ 1 │
694
694
  # # └─────┴────────┘
695
695
  def value_counts(sort: false)
@@ -1285,8 +1285,12 @@ module Polars
1285
1285
  # Expression or scalar value.
1286
1286
  #
1287
1287
  # @return [Integer]
1288
- def search_sorted(element)
1289
- Polars.select(Polars.lit(self).search_sorted(element))[0, 0]
1288
+ def search_sorted(element, side: "any")
1289
+ if element.is_a?(Integer) || element.is_a?(Float)
1290
+ return Polars.select(Polars.lit(self).search_sorted(element, side: side)).item
1291
+ end
1292
+ element = Series.new(element)
1293
+ Polars.select(Polars.lit(self).search_sorted(element, side: side)).to_series
1290
1294
  end
1291
1295
 
1292
1296
  # Get unique elements in series.
@@ -1500,7 +1504,7 @@ module Polars
1500
1504
  # sets = Polars::Series.new("sets", [[1, 2, 3], [1, 2], [9, 10]])
1501
1505
  # # =>
1502
1506
  # # shape: (3,)
1503
- # # Series: 'sets' [list]
1507
+ # # Series: 'sets' [list[i64]]
1504
1508
  # # [
1505
1509
  # # [1, 2, 3]
1506
1510
  # # [1, 2]
@@ -22,6 +22,9 @@ module Polars
22
22
  # @param exact [Boolean]
23
23
  # - If true, require an exact format match.
24
24
  # - If false, allow the format to match anywhere in the target string.
25
+ # @param utc [Boolean]
26
+ # Parse timezone aware datetimes as UTC. This may be useful if you have data
27
+ # with mixed offsets.
25
28
  #
26
29
  # @return [Expr]
27
30
  #
@@ -57,14 +60,11 @@ module Polars
57
60
  # # │ date │
58
61
  # # ╞════════════╡
59
62
  # # │ 2021-04-22 │
60
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┤
61
63
  # # │ 2022-01-04 │
62
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┤
63
64
  # # │ 2022-01-31 │
64
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┤
65
65
  # # │ 2001-07-08 │
66
66
  # # └────────────┘
67
- def strptime(datatype, fmt = nil, strict: true, exact: true, cache: true, tz_aware: false)
67
+ def strptime(datatype, fmt = nil, strict: true, exact: true, cache: true, tz_aware: false, utc: false)
68
68
  if !Utils.is_polars_dtype(datatype)
69
69
  raise ArgumentError, "expected: {DataType} got: #{datatype}"
70
70
  end
@@ -74,7 +74,7 @@ module Polars
74
74
  elsif datatype == :datetime
75
75
  # TODO fix
76
76
  tu = nil # datatype.tu
77
- dtcol = Utils.wrap_expr(_rbexpr.str_parse_datetime(fmt, strict, exact, cache, tz_aware))
77
+ dtcol = Utils.wrap_expr(_rbexpr.str_parse_datetime(fmt, strict, exact, cache, tz_aware, utc))
78
78
  if tu.nil?
79
79
  dtcol
80
80
  else
@@ -111,11 +111,8 @@ module Polars
111
111
  # # │ str ┆ u32 ┆ u32 │
112
112
  # # ╞══════╪════════╪════════╡
113
113
  # # │ Café ┆ 5 ┆ 4 │
114
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
115
114
  # # │ null ┆ null ┆ null │
116
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
117
115
  # # │ 345 ┆ 3 ┆ 3 │
118
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
119
116
  # # │ 東京 ┆ 6 ┆ 2 │
120
117
  # # └──────┴────────┴────────┘
121
118
  def lengths
@@ -146,11 +143,8 @@ module Polars
146
143
  # # │ str ┆ u32 ┆ u32 │
147
144
  # # ╞══════╪════════╪════════╡
148
145
  # # │ Café ┆ 5 ┆ 4 │
149
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
150
146
  # # │ null ┆ null ┆ null │
151
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
152
147
  # # │ 345 ┆ 3 ┆ 3 │
153
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
154
148
  # # │ 東京 ┆ 6 ┆ 2 │
155
149
  # # └──────┴────────┴────────┘
156
150
  def n_chars
@@ -195,7 +189,6 @@ module Polars
195
189
  # # │ str │
196
190
  # # ╞═════╡
197
191
  # # │ CAT │
198
- # # ├╌╌╌╌╌┤
199
192
  # # │ DOG │
200
193
  # # └─────┘
201
194
  def to_uppercase
@@ -217,7 +210,6 @@ module Polars
217
210
  # # │ str │
218
211
  # # ╞═════╡
219
212
  # # │ cat │
220
- # # ├╌╌╌╌╌┤
221
213
  # # │ dog │
222
214
  # # └─────┘
223
215
  def to_lowercase
@@ -242,9 +234,7 @@ module Polars
242
234
  # # │ str │
243
235
  # # ╞═══════╡
244
236
  # # │ lead │
245
- # # ├╌╌╌╌╌╌╌┤
246
237
  # # │ trail │
247
- # # ├╌╌╌╌╌╌╌┤
248
238
  # # │ both │
249
239
  # # └───────┘
250
240
  def strip(matches = nil)
@@ -272,9 +262,7 @@ module Polars
272
262
  # # │ str │
273
263
  # # ╞════════╡
274
264
  # # │ lead │
275
- # # ├╌╌╌╌╌╌╌╌┤
276
265
  # # │ trail │
277
- # # ├╌╌╌╌╌╌╌╌┤
278
266
  # # │ both │
279
267
  # # └────────┘
280
268
  def lstrip(matches = nil)
@@ -302,9 +290,7 @@ module Polars
302
290
  # # │ str │
303
291
  # # ╞═══════╡
304
292
  # # │ lead │
305
- # # ├╌╌╌╌╌╌╌┤
306
293
  # # │ trail │
307
- # # ├╌╌╌╌╌╌╌┤
308
294
  # # │ both │
309
295
  # # └───────┘
310
296
  def rstrip(matches = nil)
@@ -343,21 +329,13 @@ module Polars
343
329
  # # │ str │
344
330
  # # ╞═════════╡
345
331
  # # │ -0010 │
346
- # # ├╌╌╌╌╌╌╌╌╌┤
347
332
  # # │ -0001 │
348
- # # ├╌╌╌╌╌╌╌╌╌┤
349
333
  # # │ 00000 │
350
- # # ├╌╌╌╌╌╌╌╌╌┤
351
334
  # # │ 00001 │
352
- # # ├╌╌╌╌╌╌╌╌╌┤
353
335
  # # │ ... │
354
- # # ├╌╌╌╌╌╌╌╌╌┤
355
336
  # # │ 10000 │
356
- # # ├╌╌╌╌╌╌╌╌╌┤
357
337
  # # │ 100000 │
358
- # # ├╌╌╌╌╌╌╌╌╌┤
359
338
  # # │ 1000000 │
360
- # # ├╌╌╌╌╌╌╌╌╌┤
361
339
  # # │ null │
362
340
  # # └─────────┘
363
341
  def zfill(alignment)
@@ -388,11 +366,8 @@ module Polars
388
366
  # # │ str │
389
367
  # # ╞══════════════╡
390
368
  # # │ cow***** │
391
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
392
369
  # # │ monkey** │
393
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
394
370
  # # │ null │
395
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
396
371
  # # │ hippopotamus │
397
372
  # # └──────────────┘
398
373
  def ljust(width, fillchar = " ")
@@ -423,11 +398,8 @@ module Polars
423
398
  # # │ str │
424
399
  # # ╞══════════════╡
425
400
  # # │ *****cow │
426
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
427
401
  # # │ **monkey │
428
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
429
402
  # # │ null │
430
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
431
403
  # # │ hippopotamus │
432
404
  # # └──────────────┘
433
405
  def rjust(width, fillchar = " ")
@@ -460,15 +432,13 @@ module Polars
460
432
  # # │ str ┆ bool ┆ bool │
461
433
  # # ╞═════════════╪═══════╪═════════╡
462
434
  # # │ Crab ┆ false ┆ false │
463
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
464
435
  # # │ cat and dog ┆ true ┆ false │
465
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
466
436
  # # │ rab$bit ┆ true ┆ true │
467
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
468
437
  # # │ null ┆ null ┆ null │
469
438
  # # └─────────────┴───────┴─────────┘
470
- def contains(pattern, literal: false)
471
- Utils.wrap_expr(_rbexpr.str_contains(pattern, literal))
439
+ def contains(pattern, literal: false, strict: true)
440
+ pattern = Utils.expr_to_lit_or_expr(pattern, str_to_lit: true)._rbexpr
441
+ Utils.wrap_expr(_rbexpr.str_contains(pattern, literal, strict))
472
442
  end
473
443
 
474
444
  # Check if string values end with a substring.
@@ -491,9 +461,7 @@ module Polars
491
461
  # # │ str ┆ bool │
492
462
  # # ╞════════╪════════════╡
493
463
  # # │ apple ┆ false │
494
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
495
464
  # # │ mango ┆ true │
496
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
497
465
  # # │ null ┆ null │
498
466
  # # └────────┴────────────┘
499
467
  #
@@ -509,6 +477,7 @@ module Polars
509
477
  # # │ mango │
510
478
  # # └────────┘
511
479
  def ends_with(sub)
480
+ sub = Utils.expr_to_lit_or_expr(sub, str_to_lit: true)._rbexpr
512
481
  Utils.wrap_expr(_rbexpr.str_ends_with(sub))
513
482
  end
514
483
 
@@ -532,9 +501,7 @@ module Polars
532
501
  # # │ str ┆ bool │
533
502
  # # ╞════════╪════════════╡
534
503
  # # │ apple ┆ true │
535
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
536
504
  # # │ mango ┆ false │
537
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
538
505
  # # │ null ┆ null │
539
506
  # # └────────┴────────────┘
540
507
  #
@@ -550,6 +517,7 @@ module Polars
550
517
  # # │ apple │
551
518
  # # └────────┘
552
519
  def starts_with(sub)
520
+ sub = Utils.expr_to_lit_or_expr(sub, str_to_lit: true)._rbexpr
553
521
  Utils.wrap_expr(_rbexpr.str_starts_with(sub))
554
522
  end
555
523
 
@@ -579,13 +547,9 @@ module Polars
579
547
  # # │ str │
580
548
  # # ╞══════════╡
581
549
  # # │ 1 │
582
- # # ├╌╌╌╌╌╌╌╌╌╌┤
583
550
  # # │ null │
584
- # # ├╌╌╌╌╌╌╌╌╌╌┤
585
551
  # # │ 2 │
586
- # # ├╌╌╌╌╌╌╌╌╌╌┤
587
552
  # # │ 2.1 │
588
- # # ├╌╌╌╌╌╌╌╌╌╌┤
589
553
  # # │ true │
590
554
  # # └──────────┘
591
555
  def json_path_match(json_path)
@@ -609,18 +573,16 @@ module Polars
609
573
  # df.select(Polars.col("encoded").str.decode("hex"))
610
574
  # # =>
611
575
  # # shape: (3, 1)
612
- # # ┌─────────┐
613
- # # │ encoded
614
- # # │ ---
615
- # # │ str
616
- # # ╞═════════╡
617
- # # │ foo
618
- # # ├╌╌╌╌╌╌╌╌╌┤
619
- # # │ bar
620
- # # ├╌╌╌╌╌╌╌╌╌┤
621
- # # null │
622
- # # └─────────┘
623
- def decode(encoding, strict: false)
576
+ # # ┌───────────────┐
577
+ # # │ encoded
578
+ # # │ ---
579
+ # # │ binary
580
+ # # ╞═══════════════╡
581
+ # # │ [binary data]
582
+ # # │ [binary data] │
583
+ # # │ null
584
+ # # └───────────────┘
585
+ def decode(encoding, strict: true)
624
586
  if encoding == "hex"
625
587
  Utils.wrap_expr(_rbexpr.str_hex_decode(strict))
626
588
  elsif encoding == "base64"
@@ -648,9 +610,7 @@ module Polars
648
610
  # # │ str │
649
611
  # # ╞═════════╡
650
612
  # # │ 666f6f │
651
- # # ├╌╌╌╌╌╌╌╌╌┤
652
613
  # # │ 626172 │
653
- # # ├╌╌╌╌╌╌╌╌╌┤
654
614
  # # │ null │
655
615
  # # └─────────┘
656
616
  def encode(encoding)
@@ -689,7 +649,6 @@ module Polars
689
649
  # # │ str │
690
650
  # # ╞═════╡
691
651
  # # │ 123 │
692
- # # ├╌╌╌╌╌┤
693
652
  # # │ 678 │
694
653
  # # └─────┘
695
654
  def extract(pattern, group_index: 1)
@@ -721,7 +680,6 @@ module Polars
721
680
  # # │ list[str] │
722
681
  # # ╞════════════════╡
723
682
  # # │ ["123", "45"] │
724
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
725
683
  # # │ ["678", "910"] │
726
684
  # # └────────────────┘
727
685
  def extract_all(pattern)
@@ -751,7 +709,6 @@ module Polars
751
709
  # # │ u32 │
752
710
  # # ╞══════════════╡
753
711
  # # │ 5 │
754
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
755
712
  # # │ 6 │
756
713
  # # └──────────────┘
757
714
  def count_match(pattern)
@@ -778,9 +735,7 @@ module Polars
778
735
  # # │ list[str] │
779
736
  # # ╞═══════════════════════╡
780
737
  # # │ ["foo", "bar"] │
781
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
782
738
  # # │ ["foo-bar"] │
783
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
784
739
  # # │ ["foo", "bar", "baz"] │
785
740
  # # └───────────────────────┘
786
741
  def split(by, inclusive: false)
@@ -821,11 +776,8 @@ module Polars
821
776
  # # │ struct[2] │
822
777
  # # ╞═════════════╡
823
778
  # # │ {"a","1"} │
824
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌┤
825
779
  # # │ {null,null} │
826
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌┤
827
780
  # # │ {"c",null} │
828
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌┤
829
781
  # # │ {"d","4"} │
830
782
  # # └─────────────┘
831
783
  def split_exact(by, n, inclusive: false)
@@ -860,11 +812,8 @@ module Polars
860
812
  # # │ struct[2] │
861
813
  # # ╞═══════════════════╡
862
814
  # # │ {"foo","bar"} │
863
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
864
815
  # # │ {null,null} │
865
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
866
816
  # # │ {"foo-bar",null} │
867
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
868
817
  # # │ {"foo","bar baz"} │
869
818
  # # └───────────────────┘
870
819
  def splitn(by, n)
@@ -895,7 +844,6 @@ module Polars
895
844
  # # │ i64 ┆ str │
896
845
  # # ╞═════╪════════╡
897
846
  # # │ 1 ┆ 123ABC │
898
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
899
847
  # # │ 2 ┆ abc456 │
900
848
  # # └─────┴────────┘
901
849
  def replace(pattern, value, literal: false)
@@ -926,7 +874,6 @@ module Polars
926
874
  # # │ i64 ┆ str │
927
875
  # # ╞═════╪═════════╡
928
876
  # # │ 1 ┆ -bc-bc │
929
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
930
877
  # # │ 2 ┆ 123-123 │
931
878
  # # └─────┴─────────┘
932
879
  def replace_all(pattern, value, literal: false)
@@ -958,11 +905,8 @@ module Polars
958
905
  # # │ str ┆ str │
959
906
  # # ╞═════════════╪══════════╡
960
907
  # # │ pear ┆ ear │
961
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
962
908
  # # │ null ┆ null │
963
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
964
909
  # # │ papaya ┆ aya │
965
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
966
910
  # # │ dragonfruit ┆ uit │
967
911
  # # └─────────────┴──────────┘
968
912
  def slice(offset, length = nil)