polars-df 0.2.0-x86_64-darwin

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +3 -0
  3. data/CHANGELOG.md +33 -0
  4. data/Cargo.lock +2230 -0
  5. data/Cargo.toml +10 -0
  6. data/LICENSE-THIRD-PARTY.txt +38856 -0
  7. data/LICENSE.txt +20 -0
  8. data/README.md +91 -0
  9. data/lib/polars/3.0/polars.bundle +0 -0
  10. data/lib/polars/3.1/polars.bundle +0 -0
  11. data/lib/polars/3.2/polars.bundle +0 -0
  12. data/lib/polars/batched_csv_reader.rb +96 -0
  13. data/lib/polars/cat_expr.rb +52 -0
  14. data/lib/polars/cat_name_space.rb +54 -0
  15. data/lib/polars/convert.rb +100 -0
  16. data/lib/polars/data_frame.rb +4833 -0
  17. data/lib/polars/data_types.rb +122 -0
  18. data/lib/polars/date_time_expr.rb +1418 -0
  19. data/lib/polars/date_time_name_space.rb +1484 -0
  20. data/lib/polars/dynamic_group_by.rb +52 -0
  21. data/lib/polars/exceptions.rb +20 -0
  22. data/lib/polars/expr.rb +5307 -0
  23. data/lib/polars/expr_dispatch.rb +22 -0
  24. data/lib/polars/functions.rb +453 -0
  25. data/lib/polars/group_by.rb +558 -0
  26. data/lib/polars/io.rb +814 -0
  27. data/lib/polars/lazy_frame.rb +2442 -0
  28. data/lib/polars/lazy_functions.rb +1195 -0
  29. data/lib/polars/lazy_group_by.rb +93 -0
  30. data/lib/polars/list_expr.rb +610 -0
  31. data/lib/polars/list_name_space.rb +346 -0
  32. data/lib/polars/meta_expr.rb +54 -0
  33. data/lib/polars/rolling_group_by.rb +35 -0
  34. data/lib/polars/series.rb +3730 -0
  35. data/lib/polars/slice.rb +104 -0
  36. data/lib/polars/string_expr.rb +972 -0
  37. data/lib/polars/string_name_space.rb +690 -0
  38. data/lib/polars/struct_expr.rb +100 -0
  39. data/lib/polars/struct_name_space.rb +64 -0
  40. data/lib/polars/utils.rb +192 -0
  41. data/lib/polars/version.rb +4 -0
  42. data/lib/polars/when.rb +16 -0
  43. data/lib/polars/when_then.rb +19 -0
  44. data/lib/polars-df.rb +1 -0
  45. data/lib/polars.rb +50 -0
  46. metadata +89 -0
@@ -0,0 +1,1484 @@
1
+ module Polars
2
+ # Series.dt namespace.
3
+ class DateTimeNameSpace
4
+ include ExprDispatch
5
+
6
+ self._accessor = "dt"
7
+
8
+ # @private
9
+ def initialize(series)
10
+ self._s = series._s
11
+ end
12
+
13
+ # Get item.
14
+ #
15
+ # @return [Object]
16
+ def [](item)
17
+ s = Utils.wrap_s(_s)
18
+ s[item]
19
+ end
20
+
21
+ # Return minimum as Ruby object.
22
+ #
23
+ # @return [Object]
24
+ #
25
+ # @example
26
+ # date = Polars.date_range(DateTime.new(2001, 1, 1), DateTime.new(2001, 1, 3), "1d")
27
+ # # =>
28
+ # # shape: (3,)
29
+ # # Series: '' [datetime[μs]]
30
+ # # [
31
+ # # 2001-01-01 00:00:00
32
+ # # 2001-01-02 00:00:00
33
+ # # 2001-01-03 00:00:00
34
+ # # ]
35
+ #
36
+ # @example
37
+ # date.dt.min
38
+ # # => 2001-01-01 00:00:00 UTC
39
+ def min
40
+ Utils.wrap_s(_s).min
41
+ end
42
+
43
+ # Return maximum as Ruby object.
44
+ #
45
+ # @return [Object]
46
+ #
47
+ # @example
48
+ # date = Polars.date_range(DateTime.new(2001, 1, 1), DateTime.new(2001, 1, 3), "1d")
49
+ # # =>
50
+ # # shape: (3,)
51
+ # # Series: '' [datetime[μs]]
52
+ # # [
53
+ # # 2001-01-01 00:00:00
54
+ # # 2001-01-02 00:00:00
55
+ # # 2001-01-03 00:00:00
56
+ # # ]
57
+ #
58
+ # @example
59
+ # date.dt.max
60
+ # # => 2001-01-03 00:00:00 UTC
61
+ def max
62
+ Utils.wrap_s(_s).max
63
+ end
64
+
65
+ # Return median as Ruby object.
66
+ #
67
+ # @return [Object]
68
+ #
69
+ # @example
70
+ # date = Polars.date_range(DateTime.new(2001, 1, 1), DateTime.new(2001, 1, 3), "1d")
71
+ # # =>
72
+ # # shape: (3,)
73
+ # # Series: '' [datetime[μs]]
74
+ # # [
75
+ # # 2001-01-01 00:00:00
76
+ # # 2001-01-02 00:00:00
77
+ # # 2001-01-03 00:00:00
78
+ # # ]
79
+ #
80
+ # @example
81
+ # date.dt.median
82
+ # # => 2001-01-02 00:00:00 UTC
83
+ def median
84
+ s = Utils.wrap_s(_s)
85
+ out = s.median.to_i
86
+ Utils._to_ruby_datetime(out, s.dtype, tu: s.time_unit)
87
+ end
88
+
89
+ # Return mean as Ruby object.
90
+ #
91
+ # @return [Object]
92
+ #
93
+ # @example
94
+ # date = Polars.date_range(DateTime.new(2001, 1, 1), DateTime.new(2001, 1, 3), "1d")
95
+ # # =>
96
+ # # shape: (3,)
97
+ # # Series: '' [datetime[μs]]
98
+ # # [
99
+ # # 2001-01-01 00:00:00
100
+ # # 2001-01-02 00:00:00
101
+ # # 2001-01-03 00:00:00
102
+ # # ]
103
+ #
104
+ # @example
105
+ # date.dt.mean
106
+ # # => 2001-01-02 00:00:00 UTC
107
+ def mean
108
+ s = Utils.wrap_s(_s)
109
+ out = s.mean.to_i
110
+ Utils._to_ruby_datetime(out, s.dtype, tu: s.time_unit)
111
+ end
112
+
113
+ # Format Date/datetime with a formatting rule.
114
+ #
115
+ # See [chrono strftime/strptime](https://docs.rs/chrono/0.4.19/chrono/format/strftime/index.html).
116
+ #
117
+ # @return [Series]
118
+ #
119
+ # @example
120
+ # start = DateTime.new(2001, 1, 1)
121
+ # stop = DateTime.new(2001, 1, 4)
122
+ # date = Polars.date_range(start, stop, "1d")
123
+ # # =>
124
+ # # shape: (4,)
125
+ # # Series: '' [datetime[μs]]
126
+ # # [
127
+ # # 2001-01-01 00:00:00
128
+ # # 2001-01-02 00:00:00
129
+ # # 2001-01-03 00:00:00
130
+ # # 2001-01-04 00:00:00
131
+ # # ]
132
+ #
133
+ # @example
134
+ # date.dt.strftime("%Y-%m-%d")
135
+ # # =>
136
+ # # shape: (4,)
137
+ # # Series: '' [str]
138
+ # # [
139
+ # # "2001-01-01"
140
+ # # "2001-01-02"
141
+ # # "2001-01-03"
142
+ # # "2001-01-04"
143
+ # # ]
144
+ def strftime(fmt)
145
+ super
146
+ end
147
+
148
+ # Extract the year from the underlying date representation.
149
+ #
150
+ # Applies to Date and Datetime columns.
151
+ #
152
+ # Returns the year number in the calendar date.
153
+ #
154
+ # @return [Series]
155
+ #
156
+ # @example
157
+ # start = DateTime.new(2001, 1, 1)
158
+ # stop = DateTime.new(2002, 1, 1)
159
+ # date = Polars.date_range(start, stop, "1y")
160
+ # # =>
161
+ # # shape: (2,)
162
+ # # Series: '' [datetime[μs]]
163
+ # # [
164
+ # # 2001-01-01 00:00:00
165
+ # # 2002-01-01 00:00:00
166
+ # # ]
167
+ #
168
+ # @example
169
+ # date.dt.year
170
+ # # =>
171
+ # # shape: (2,)
172
+ # # Series: '' [i32]
173
+ # # [
174
+ # # 2001
175
+ # # 2002
176
+ # # ]
177
+ def year
178
+ super
179
+ end
180
+
181
+ # Extract ISO year from underlying Date representation.
182
+ #
183
+ # Applies to Date and Datetime columns.
184
+ #
185
+ # Returns the year number according to the ISO standard.
186
+ # This may not correspond with the calendar year.
187
+ #
188
+ # @return [Series]
189
+ #
190
+ # @example
191
+ # dt = DateTime.new(2022, 1, 1, 7, 8, 40)
192
+ # Polars::Series.new([dt]).dt.iso_year
193
+ # # =>
194
+ # # shape: (1,)
195
+ # # Series: '' [i32]
196
+ # # [
197
+ # # 2021
198
+ # # ]
199
+ def iso_year
200
+ super
201
+ end
202
+
203
+ # Extract quarter from underlying Date representation.
204
+ #
205
+ # Applies to Date and Datetime columns.
206
+ #
207
+ # Returns the quarter ranging from 1 to 4.
208
+ #
209
+ # @return [Series]
210
+ #
211
+ # @example
212
+ # start = DateTime.new(2001, 1, 1)
213
+ # stop = DateTime.new(2001, 4, 1)
214
+ # date = Polars.date_range(start, stop, "1mo")
215
+ # # =>
216
+ # # shape: (4,)
217
+ # # Series: '' [datetime[μs]]
218
+ # # [
219
+ # # 2001-01-01 00:00:00
220
+ # # 2001-02-01 00:00:00
221
+ # # 2001-03-01 00:00:00
222
+ # # 2001-04-01 00:00:00
223
+ # # ]
224
+ #
225
+ # @example
226
+ # date.dt.quarter
227
+ # # =>
228
+ # # shape: (4,)
229
+ # # Series: '' [u32]
230
+ # # [
231
+ # # 1
232
+ # # 1
233
+ # # 1
234
+ # # 2
235
+ # # ]
236
+ def quarter
237
+ super
238
+ end
239
+
240
+ # Extract the month from the underlying date representation.
241
+ #
242
+ # Applies to Date and Datetime columns.
243
+ #
244
+ # Returns the month number starting from 1.
245
+ # The return value ranges from 1 to 12.
246
+ #
247
+ # @return [Series]
248
+ #
249
+ # @example
250
+ # start = DateTime.new(2001, 1, 1)
251
+ # stop = DateTime.new(2001, 4, 1)
252
+ # date = Polars.date_range(start, stop, "1mo")
253
+ # # =>
254
+ # # shape: (4,)
255
+ # # Series: '' [datetime[μs]]
256
+ # # [
257
+ # # 2001-01-01 00:00:00
258
+ # # 2001-02-01 00:00:00
259
+ # # 2001-03-01 00:00:00
260
+ # # 2001-04-01 00:00:00
261
+ # # ]
262
+ #
263
+ # @example
264
+ # date.dt.month
265
+ # # =>
266
+ # # shape: (4,)
267
+ # # Series: '' [u32]
268
+ # # [
269
+ # # 1
270
+ # # 2
271
+ # # 3
272
+ # # 4
273
+ # # ]
274
+ def month
275
+ super
276
+ end
277
+
278
+ # Extract the week from the underlying date representation.
279
+ #
280
+ # Applies to Date and Datetime columns.
281
+ #
282
+ # Returns the ISO week number starting from 1.
283
+ # The return value ranges from 1 to 53. (The last week of year differs by years.)
284
+ #
285
+ # @return [Series]
286
+ #
287
+ # @example
288
+ # start = DateTime.new(2001, 1, 1)
289
+ # stop = DateTime.new(2001, 4, 1)
290
+ # date = Polars.date_range(start, stop, "1mo")
291
+ # # =>
292
+ # # shape: (4,)
293
+ # # Series: '' [datetime[μs]]
294
+ # # [
295
+ # # 2001-01-01 00:00:00
296
+ # # 2001-02-01 00:00:00
297
+ # # 2001-03-01 00:00:00
298
+ # # 2001-04-01 00:00:00
299
+ # # ]
300
+ #
301
+ # @example
302
+ # date.dt.week
303
+ # # =>
304
+ # # shape: (4,)
305
+ # # Series: '' [u32]
306
+ # # [
307
+ # # 1
308
+ # # 5
309
+ # # 9
310
+ # # 13
311
+ # # ]
312
+ def week
313
+ super
314
+ end
315
+
316
+ # Extract the week day from the underlying date representation.
317
+ #
318
+ # Applies to Date and Datetime columns.
319
+ #
320
+ # Returns the ISO weekday number where monday = 1 and sunday = 7
321
+ #
322
+ # @return [Series]
323
+ #
324
+ # @example
325
+ # start = DateTime.new(2001, 1, 1)
326
+ # stop = DateTime.new(2001, 1, 7)
327
+ # date = Polars.date_range(start, stop, "1d")
328
+ # # =>
329
+ # # shape: (7,)
330
+ # # Series: '' [datetime[μs]]
331
+ # # [
332
+ # # 2001-01-01 00:00:00
333
+ # # 2001-01-02 00:00:00
334
+ # # 2001-01-03 00:00:00
335
+ # # 2001-01-04 00:00:00
336
+ # # 2001-01-05 00:00:00
337
+ # # 2001-01-06 00:00:00
338
+ # # 2001-01-07 00:00:00
339
+ # # ]
340
+ #
341
+ # @example
342
+ # date.dt.weekday
343
+ # # =>
344
+ # # shape: (7,)
345
+ # # Series: '' [u32]
346
+ # # [
347
+ # # 1
348
+ # # 2
349
+ # # 3
350
+ # # 4
351
+ # # 5
352
+ # # 6
353
+ # # 7
354
+ # # ]
355
+ def weekday
356
+ super
357
+ end
358
+
359
+ # Extract the day from the underlying date representation.
360
+ #
361
+ # Applies to Date and Datetime columns.
362
+ #
363
+ # Returns the day of month starting from 1.
364
+ # The return value ranges from 1 to 31. (The last day of month differs by months.)
365
+ #
366
+ # @return [Series]
367
+ #
368
+ # @example
369
+ # start = DateTime.new(2001, 1, 1)
370
+ # stop = DateTime.new(2001, 1, 9)
371
+ # date = Polars.date_range(start, stop, "2d")
372
+ # # =>
373
+ # # shape: (5,)
374
+ # # Series: '' [datetime[μs]]
375
+ # # [
376
+ # # 2001-01-01 00:00:00
377
+ # # 2001-01-03 00:00:00
378
+ # # 2001-01-05 00:00:00
379
+ # # 2001-01-07 00:00:00
380
+ # # 2001-01-09 00:00:00
381
+ # # ]
382
+ #
383
+ # @example
384
+ # date.dt.day
385
+ # # =>
386
+ # # shape: (5,)
387
+ # # Series: '' [u32]
388
+ # # [
389
+ # # 1
390
+ # # 3
391
+ # # 5
392
+ # # 7
393
+ # # 9
394
+ # # ]
395
+ def day
396
+ super
397
+ end
398
+
399
+ # Extract ordinal day from underlying date representation.
400
+ #
401
+ # Applies to Date and Datetime columns.
402
+ #
403
+ # Returns the day of year starting from 1.
404
+ # The return value ranges from 1 to 366. (The last day of year differs by years.)
405
+ #
406
+ # @return [Series]
407
+ #
408
+ # @example
409
+ # start = DateTime.new(2001, 1, 1)
410
+ # stop = DateTime.new(2001, 3, 1)
411
+ # date = Polars.date_range(start, stop, "1mo")
412
+ # # =>
413
+ # # shape: (3,)
414
+ # # Series: '' [datetime[μs]]
415
+ # # [
416
+ # # 2001-01-01 00:00:00
417
+ # # 2001-02-01 00:00:00
418
+ # # 2001-03-01 00:00:00
419
+ # # ]
420
+ #
421
+ # @example
422
+ # date.dt.ordinal_day
423
+ # # =>
424
+ # # shape: (3,)
425
+ # # Series: '' [u32]
426
+ # # [
427
+ # # 1
428
+ # # 32
429
+ # # 60
430
+ # # ]
431
+ def ordinal_day
432
+ super
433
+ end
434
+
435
+ # Extract the hour from the underlying DateTime representation.
436
+ #
437
+ # Applies to Datetime columns.
438
+ #
439
+ # Returns the hour number from 0 to 23.
440
+ #
441
+ # @return [Series]
442
+ #
443
+ # @example
444
+ # start = DateTime.new(2001, 1, 1)
445
+ # stop = DateTime.new(2001, 1, 1, 3)
446
+ # date = Polars.date_range(start, stop, "1h")
447
+ # # =>
448
+ # # shape: (4,)
449
+ # # Series: '' [datetime[μs]]
450
+ # # [
451
+ # # 2001-01-01 00:00:00
452
+ # # 2001-01-01 01:00:00
453
+ # # 2001-01-01 02:00:00
454
+ # # 2001-01-01 03:00:00
455
+ # # ]
456
+ #
457
+ # @example
458
+ # date.dt.hour
459
+ # # =>
460
+ # # shape: (4,)
461
+ # # Series: '' [u32]
462
+ # # [
463
+ # # 0
464
+ # # 1
465
+ # # 2
466
+ # # 3
467
+ # # ]
468
+ def hour
469
+ super
470
+ end
471
+
472
+ # Extract the minutes from the underlying DateTime representation.
473
+ #
474
+ # Applies to Datetime columns.
475
+ #
476
+ # Returns the minute number from 0 to 59.
477
+ #
478
+ # @return [Series]
479
+ #
480
+ # @example
481
+ # start = DateTime.new(2001, 1, 1)
482
+ # stop = DateTime.new(2001, 1, 1, 0, 4, 0)
483
+ # date = Polars.date_range(start, stop, "2m")
484
+ # # =>
485
+ # # shape: (3,)
486
+ # # Series: '' [datetime[μs]]
487
+ # # [
488
+ # # 2001-01-01 00:00:00
489
+ # # 2001-01-01 00:02:00
490
+ # # 2001-01-01 00:04:00
491
+ # # ]
492
+ #
493
+ # @example
494
+ # date.dt.minute
495
+ # # =>
496
+ # # shape: (3,)
497
+ # # Series: '' [u32]
498
+ # # [
499
+ # # 0
500
+ # # 2
501
+ # # 4
502
+ # # ]
503
+ def minute
504
+ super
505
+ end
506
+
507
+ # Extract seconds from underlying DateTime representation.
508
+ #
509
+ # Applies to Datetime columns.
510
+ #
511
+ # Returns the integer second number from 0 to 59, or a floating
512
+ # point number from 0 < 60 if `fractional: true` that includes
513
+ # any milli/micro/nanosecond component.
514
+ #
515
+ # @return [Series]
516
+ #
517
+ # @example
518
+ # start = DateTime.new(2001, 1, 1)
519
+ # stop = DateTime.new(2001, 1, 1, 0, 0, 4)
520
+ # date = Polars.date_range(start, stop, "500ms")
521
+ # # =>
522
+ # # shape: (9,)
523
+ # # Series: '' [datetime[μs]]
524
+ # # [
525
+ # # 2001-01-01 00:00:00
526
+ # # 2001-01-01 00:00:00.500
527
+ # # 2001-01-01 00:00:01
528
+ # # 2001-01-01 00:00:01.500
529
+ # # 2001-01-01 00:00:02
530
+ # # 2001-01-01 00:00:02.500
531
+ # # 2001-01-01 00:00:03
532
+ # # 2001-01-01 00:00:03.500
533
+ # # 2001-01-01 00:00:04
534
+ # # ]
535
+ #
536
+ # @example
537
+ # date.dt.second
538
+ # # =>
539
+ # # shape: (9,)
540
+ # # Series: '' [u32]
541
+ # # [
542
+ # # 0
543
+ # # 0
544
+ # # 1
545
+ # # 1
546
+ # # 2
547
+ # # 2
548
+ # # 3
549
+ # # 3
550
+ # # 4
551
+ # # ]
552
+ #
553
+ # @example
554
+ # date.dt.second(fractional: true)
555
+ # # =>
556
+ # # shape: (9,)
557
+ # # Series: '' [f64]
558
+ # # [
559
+ # # 0.0
560
+ # # 0.5
561
+ # # 1.0
562
+ # # 1.5
563
+ # # 2.0
564
+ # # 2.5
565
+ # # 3.0
566
+ # # 3.5
567
+ # # 4.0
568
+ # # ]
569
+ def second(fractional: false)
570
+ super
571
+ end
572
+
573
+ # Extract the milliseconds from the underlying DateTime representation.
574
+ #
575
+ # Applies to Datetime columns.
576
+ #
577
+ # @return [Series]
578
+ #
579
+ # @example
580
+ # start = DateTime.new(2001, 1, 1)
581
+ # stop = DateTime.new(2001, 1, 1, 0, 0, 4)
582
+ # date = Polars.date_range(start, stop, "500ms")
583
+ # # =>
584
+ # # shape: (9,)
585
+ # # Series: '' [datetime[μs]]
586
+ # # [
587
+ # # 2001-01-01 00:00:00
588
+ # # 2001-01-01 00:00:00.500
589
+ # # 2001-01-01 00:00:01
590
+ # # 2001-01-01 00:00:01.500
591
+ # # 2001-01-01 00:00:02
592
+ # # 2001-01-01 00:00:02.500
593
+ # # 2001-01-01 00:00:03
594
+ # # 2001-01-01 00:00:03.500
595
+ # # 2001-01-01 00:00:04
596
+ # # ]
597
+ #
598
+ # @example
599
+ # date.dt.millisecond
600
+ # # =>
601
+ # # shape: (9,)
602
+ # # Series: '' [u32]
603
+ # # [
604
+ # # 0
605
+ # # 500
606
+ # # 0
607
+ # # 500
608
+ # # 0
609
+ # # 500
610
+ # # 0
611
+ # # 500
612
+ # # 0
613
+ # # ]
614
+ def millisecond
615
+ super
616
+ end
617
+
618
+ # Extract the microseconds from the underlying DateTime representation.
619
+ #
620
+ # Applies to Datetime columns.
621
+ #
622
+ # @return [Series]
623
+ #
624
+ # @example
625
+ # start = DateTime.new(2001, 1, 1)
626
+ # stop = DateTime.new(2001, 1, 1, 0, 0, 4)
627
+ # date = Polars.date_range(start, stop, "500ms")
628
+ # # =>
629
+ # # shape: (9,)
630
+ # # Series: '' [datetime[μs]]
631
+ # # [
632
+ # # 2001-01-01 00:00:00
633
+ # # 2001-01-01 00:00:00.500
634
+ # # 2001-01-01 00:00:01
635
+ # # 2001-01-01 00:00:01.500
636
+ # # 2001-01-01 00:00:02
637
+ # # 2001-01-01 00:00:02.500
638
+ # # 2001-01-01 00:00:03
639
+ # # 2001-01-01 00:00:03.500
640
+ # # 2001-01-01 00:00:04
641
+ # # ]
642
+ #
643
+ # @example
644
+ # date.dt.microsecond
645
+ # # =>
646
+ # # shape: (9,)
647
+ # # Series: '' [u32]
648
+ # # [
649
+ # # 0
650
+ # # 500000
651
+ # # 0
652
+ # # 500000
653
+ # # 0
654
+ # # 500000
655
+ # # 0
656
+ # # 500000
657
+ # # 0
658
+ # # ]
659
+ def microsecond
660
+ super
661
+ end
662
+
663
+ # Extract the nanoseconds from the underlying DateTime representation.
664
+ #
665
+ # Applies to Datetime columns.
666
+ #
667
+ # @return [Series]
668
+ #
669
+ # @example
670
+ # start = DateTime.new(2001, 1, 1)
671
+ # stop = DateTime.new(2001, 1, 1, 0, 0, 4)
672
+ # date = Polars.date_range(start, stop, "500ms")
673
+ # # =>
674
+ # # shape: (9,)
675
+ # # Series: '' [datetime[μs]]
676
+ # # [
677
+ # # 2001-01-01 00:00:00
678
+ # # 2001-01-01 00:00:00.500
679
+ # # 2001-01-01 00:00:01
680
+ # # 2001-01-01 00:00:01.500
681
+ # # 2001-01-01 00:00:02
682
+ # # 2001-01-01 00:00:02.500
683
+ # # 2001-01-01 00:00:03
684
+ # # 2001-01-01 00:00:03.500
685
+ # # 2001-01-01 00:00:04
686
+ # # ]
687
+ #
688
+ # @example
689
+ # date.dt.nanosecond
690
+ # # =>
691
+ # # shape: (9,)
692
+ # # Series: '' [u32]
693
+ # # [
694
+ # # 0
695
+ # # 500000000
696
+ # # 0
697
+ # # 500000000
698
+ # # 0
699
+ # # 500000000
700
+ # # 0
701
+ # # 500000000
702
+ # # 0
703
+ # # ]
704
+ def nanosecond
705
+ super
706
+ end
707
+
708
+ # Return a timestamp in the given time unit.
709
+ #
710
+ # @param tu ["us", "ns", "ms"]
711
+ # Time unit.
712
+ #
713
+ # @return [Series]
714
+ #
715
+ # @example
716
+ # start = DateTime.new(2001, 1, 1)
717
+ # stop = DateTime.new(2001, 1, 3)
718
+ # date = Polars.date_range(start, stop, "1d")
719
+ # # =>
720
+ # # shape: (3,)
721
+ # # Series: '' [datetime[μs]]
722
+ # # [
723
+ # # 2001-01-01 00:00:00
724
+ # # 2001-01-02 00:00:00
725
+ # # 2001-01-03 00:00:00
726
+ # # ]
727
+ #
728
+ # @example
729
+ # date.dt.timestamp.alias("timestamp_us")
730
+ # # =>
731
+ # # shape: (3,)
732
+ # # Series: 'timestamp_us' [i64]
733
+ # # [
734
+ # # 978307200000000
735
+ # # 978393600000000
736
+ # # 978480000000000
737
+ # # ]
738
+ #
739
+ # @example
740
+ # date.dt.timestamp("ns").alias("timestamp_ns")
741
+ # # =>
742
+ # # shape: (3,)
743
+ # # Series: 'timestamp_ns' [i64]
744
+ # # [
745
+ # # 978307200000000000
746
+ # # 978393600000000000
747
+ # # 978480000000000000
748
+ # # ]
749
+ def timestamp(tu = "us")
750
+ super
751
+ end
752
+
753
+ # Get the time passed since the Unix EPOCH in the give time unit.
754
+ #
755
+ # @param tu ["us", "ns", "ms", "s", "d"]
756
+ # Time unit.
757
+ #
758
+ # @return [Series]
759
+ #
760
+ # @example
761
+ # start = DateTime.new(2001, 1, 1)
762
+ # stop = DateTime.new(2001, 1, 3)
763
+ # date = Polars.date_range(start, stop, "1d")
764
+ # # =>
765
+ # # shape: (3,)
766
+ # # Series: '' [datetime[μs]]
767
+ # # [
768
+ # # 2001-01-01 00:00:00
769
+ # # 2001-01-02 00:00:00
770
+ # # 2001-01-03 00:00:00
771
+ # # ]
772
+ #
773
+ # @example
774
+ # date.dt.epoch.alias("epoch_ns")
775
+ # # =>
776
+ # # shape: (3,)
777
+ # # Series: 'epoch_ns' [i64]
778
+ # # [
779
+ # # 978307200000000
780
+ # # 978393600000000
781
+ # # 978480000000000
782
+ # # ]
783
+ #
784
+ # @example
785
+ # date.dt.epoch("s").alias("epoch_s")
786
+ # # =>
787
+ # # shape: (3,)
788
+ # # Series: 'epoch_s' [i64]
789
+ # # [
790
+ # # 978307200
791
+ # # 978393600
792
+ # # 978480000
793
+ # # ]
794
+ def epoch(tu = "us")
795
+ super
796
+ end
797
+
798
+ # Set time unit a Series of dtype Datetime or Duration.
799
+ #
800
+ # This does not modify underlying data, and should be used to fix an incorrect
801
+ # time unit.
802
+ #
803
+ # @param tu ["ns", "us", "ms"]
804
+ # Time unit for the `Datetime` Series.
805
+ #
806
+ # @return [Series]
807
+ #
808
+ # @example
809
+ # start = DateTime.new(2001, 1, 1)
810
+ # stop = DateTime.new(2001, 1, 3)
811
+ # date = Polars.date_range(start, stop, "1d", time_unit: "ns")
812
+ # # =>
813
+ # # shape: (3,)
814
+ # # Series: '' [datetime[ns]]
815
+ # # [
816
+ # # 2001-01-01 00:00:00
817
+ # # 2001-01-02 00:00:00
818
+ # # 2001-01-03 00:00:00
819
+ # # ]
820
+ #
821
+ # @example
822
+ # date.dt.with_time_unit("us").alias("tu_us")
823
+ # # =>
824
+ # # shape: (3,)
825
+ # # Series: 'tu_us' [datetime[μs]]
826
+ # # [
827
+ # # +32971-04-28 00:00:00
828
+ # # +32974-01-22 00:00:00
829
+ # # +32976-10-18 00:00:00
830
+ # # ]
831
+ def with_time_unit(tu)
832
+ super
833
+ end
834
+
835
+ # Cast the underlying data to another time unit. This may lose precision.
836
+ #
837
+ # @param tu ["ns", "us", "ms"]
838
+ # Time unit for the `Datetime` Series.
839
+ #
840
+ # @return [Series]
841
+ #
842
+ # @example
843
+ # start = DateTime.new(2001, 1, 1)
844
+ # stop = DateTime.new(2001, 1, 3)
845
+ # date = Polars.date_range(start, stop, "1d")
846
+ # # =>
847
+ # # shape: (3,)
848
+ # # Series: '' [datetime[μs]]
849
+ # # [
850
+ # # 2001-01-01 00:00:00
851
+ # # 2001-01-02 00:00:00
852
+ # # 2001-01-03 00:00:00
853
+ # # ]
854
+ #
855
+ # @example
856
+ # date.dt.cast_time_unit("ms").alias("tu_ms")
857
+ # # =>
858
+ # # shape: (3,)
859
+ # # Series: 'tu_ms' [datetime[ms]]
860
+ # # [
861
+ # # 2001-01-01 00:00:00
862
+ # # 2001-01-02 00:00:00
863
+ # # 2001-01-03 00:00:00
864
+ # # ]
865
+ #
866
+ # @example
867
+ # date.dt.cast_time_unit("ns").alias("tu_ns")
868
+ # # =>
869
+ # # shape: (3,)
870
+ # # Series: 'tu_ns' [datetime[ns]]
871
+ # # [
872
+ # # 2001-01-01 00:00:00
873
+ # # 2001-01-02 00:00:00
874
+ # # 2001-01-03 00:00:00
875
+ # # ]
876
+ def cast_time_unit(tu)
877
+ super
878
+ end
879
+
880
+ # Set time zone a Series of type Datetime.
881
+ #
882
+ # @param tz [String]
883
+ # Time zone for the `Datetime` Series.
884
+ #
885
+ # @return [Series]
886
+ #
887
+ # @example
888
+ # start = DateTime.new(2020, 3, 1)
889
+ # stop = DateTime.new(2020, 5, 1)
890
+ # date = Polars.date_range(start, stop, "1mo")
891
+ # # =>
892
+ # # shape: (3,)
893
+ # # Series: '' [datetime[μs]]
894
+ # # [
895
+ # # 2020-03-01 00:00:00
896
+ # # 2020-04-01 00:00:00
897
+ # # 2020-05-01 00:00:00
898
+ # # ]
899
+ #
900
+ # @example
901
+ # date.dt.with_time_zone("Europe/London").alias("London")
902
+ # # =>
903
+ # # shape: (3,)
904
+ # # Series: 'London' [datetime[μs, Europe/London]]
905
+ # # [
906
+ # # 2020-03-01 00:00:00 GMT
907
+ # # 2020-04-01 01:00:00 BST
908
+ # # 2020-05-01 01:00:00 BST
909
+ # # ]
910
+ def with_time_zone(tz)
911
+ super
912
+ end
913
+
914
+ # Cast time zone for a Series of type Datetime.
915
+ #
916
+ # Different from `with_time_zone`, this will also modify
917
+ # the underlying timestamp.
918
+ #
919
+ # @param tz [String]
920
+ # Time zone for the `Datetime` Series.
921
+ #
922
+ # @return [Series]
923
+ #
924
+ # @example
925
+ # start = DateTime.new(2020, 3, 1)
926
+ # stop = DateTime.new(2020, 5, 1)
927
+ # date = Polars.date_range(start, stop, "1mo")
928
+ # # =>
929
+ # # shape: (3,)
930
+ # # Series: '' [datetime[μs]]
931
+ # # [
932
+ # # 2020-03-01 00:00:00
933
+ # # 2020-04-01 00:00:00
934
+ # # 2020-05-01 00:00:00
935
+ # # ]
936
+ #
937
+ # @example
938
+ # date.dt.epoch("s")
939
+ # # =>
940
+ # # shape: (3,)
941
+ # # Series: '' [i64]
942
+ # # [
943
+ # # 1583020800
944
+ # # 1585699200
945
+ # # 1588291200
946
+ # # ]
947
+ #
948
+ # @example
949
+ # date = date.dt.with_time_zone("Europe/London").alias("London")
950
+ # # =>
951
+ # # shape: (3,)
952
+ # # Series: 'London' [datetime[μs, Europe/London]]
953
+ # # [
954
+ # # 2020-03-01 00:00:00 GMT
955
+ # # 2020-04-01 01:00:00 BST
956
+ # # 2020-05-01 01:00:00 BST
957
+ # # ]
958
+ #
959
+ # @example Timestamps have not changed after with_time_zone
960
+ # date.dt.epoch("s")
961
+ # # =>
962
+ # # shape: (3,)
963
+ # # Series: 'London' [i64]
964
+ # # [
965
+ # # 1583020800
966
+ # # 1585699200
967
+ # # 1588291200
968
+ # # ]
969
+ #
970
+ # @example
971
+ # date = date.dt.cast_time_zone("America/New_York").alias("NYC")
972
+ # # =>
973
+ # # shape: (3,)
974
+ # # Series: 'NYC' [datetime[μs, America/New_York]]
975
+ # # [
976
+ # # 2020-03-01 00:00:00 EST
977
+ # # 2020-04-01 01:00:00 EDT
978
+ # # 2020-05-01 01:00:00 EDT
979
+ # # ]
980
+ #
981
+ # @example Timestamps have changed after cast_time_zone
982
+ # date.dt.epoch("s")
983
+ # # =>
984
+ # # shape: (3,)
985
+ # # Series: 'NYC' [i64]
986
+ # # [
987
+ # # 1583038800
988
+ # # 1585717200
989
+ # # 1588309200
990
+ # # ]
991
+ def cast_time_zone(tz)
992
+ super
993
+ end
994
+
995
+ # Localize tz-naive Datetime Series to tz-aware Datetime Series.
996
+ #
997
+ # This method takes a naive Datetime Series and makes this time zone aware.
998
+ # It does not move the time to another time zone.
999
+ #
1000
+ # @param tz [String]
1001
+ # Time zone for the `Datetime` Series.
1002
+ #
1003
+ # @return [Series]
1004
+ def tz_localize(tz)
1005
+ super
1006
+ end
1007
+
1008
+ # Extract the days from a Duration type.
1009
+ #
1010
+ # @return [Series]
1011
+ #
1012
+ # @example
1013
+ # date = Polars.date_range(DateTime.new(2020, 3, 1), DateTime.new(2020, 5, 1), "1mo")
1014
+ # # =>
1015
+ # # shape: (3,)
1016
+ # # Series: '' [datetime[μs]]
1017
+ # # [
1018
+ # # 2020-03-01 00:00:00
1019
+ # # 2020-04-01 00:00:00
1020
+ # # 2020-05-01 00:00:00
1021
+ # # ]
1022
+ #
1023
+ # @example
1024
+ # date.diff.dt.days
1025
+ # # =>
1026
+ # # shape: (3,)
1027
+ # # Series: '' [i64]
1028
+ # # [
1029
+ # # null
1030
+ # # 31
1031
+ # # 30
1032
+ # # ]
1033
+ def days
1034
+ super
1035
+ end
1036
+
1037
+ # Extract the hours from a Duration type.
1038
+ #
1039
+ # @return [Series]
1040
+ #
1041
+ # @example
1042
+ # date = Polars.date_range(DateTime.new(2020, 1, 1), DateTime.new(2020, 1, 4), "1d")
1043
+ # # =>
1044
+ # # shape: (4,)
1045
+ # # Series: '' [datetime[μs]]
1046
+ # # [
1047
+ # # 2020-01-01 00:00:00
1048
+ # # 2020-01-02 00:00:00
1049
+ # # 2020-01-03 00:00:00
1050
+ # # 2020-01-04 00:00:00
1051
+ # # ]
1052
+ #
1053
+ # @example
1054
+ # date.diff.dt.hours
1055
+ # # =>
1056
+ # # shape: (4,)
1057
+ # # Series: '' [i64]
1058
+ # # [
1059
+ # # null
1060
+ # # 24
1061
+ # # 24
1062
+ # # 24
1063
+ # # ]
1064
+ def hours
1065
+ super
1066
+ end
1067
+
1068
+ # Extract the minutes from a Duration type.
1069
+ #
1070
+ # @return [Series]
1071
+ #
1072
+ # @example
1073
+ # date = Polars.date_range(DateTime.new(2020, 1, 1), DateTime.new(2020, 1, 4), "1d")
1074
+ # # =>
1075
+ # # shape: (4,)
1076
+ # # Series: '' [datetime[μs]]
1077
+ # # [
1078
+ # # 2020-01-01 00:00:00
1079
+ # # 2020-01-02 00:00:00
1080
+ # # 2020-01-03 00:00:00
1081
+ # # 2020-01-04 00:00:00
1082
+ # # ]
1083
+ #
1084
+ # @example
1085
+ # date.diff.dt.minutes
1086
+ # # =>
1087
+ # # shape: (4,)
1088
+ # # Series: '' [i64]
1089
+ # # [
1090
+ # # null
1091
+ # # 1440
1092
+ # # 1440
1093
+ # # 1440
1094
+ # # ]
1095
+ def minutes
1096
+ super
1097
+ end
1098
+
1099
+ # Extract the seconds from a Duration type.
1100
+ #
1101
+ # @return [Series]
1102
+ #
1103
+ # @example
1104
+ # date = Polars.date_range(
1105
+ # DateTime.new(2020, 1, 1), DateTime.new(2020, 1, 1, 0, 4, 0), "1m"
1106
+ # )
1107
+ # # =>
1108
+ # # shape: (5,)
1109
+ # # Series: '' [datetime[μs]]
1110
+ # # [
1111
+ # # 2020-01-01 00:00:00
1112
+ # # 2020-01-01 00:01:00
1113
+ # # 2020-01-01 00:02:00
1114
+ # # 2020-01-01 00:03:00
1115
+ # # 2020-01-01 00:04:00
1116
+ # # ]
1117
+ #
1118
+ # @example
1119
+ # date.diff.dt.seconds
1120
+ # # =>
1121
+ # # shape: (5,)
1122
+ # # Series: '' [i64]
1123
+ # # [
1124
+ # # null
1125
+ # # 60
1126
+ # # 60
1127
+ # # 60
1128
+ # # 60
1129
+ # # ]
1130
+ def seconds
1131
+ super
1132
+ end
1133
+
1134
+ # Extract the milliseconds from a Duration type.
1135
+ #
1136
+ # @return [Series]
1137
+ #
1138
+ # @example
1139
+ # date = Polars.date_range(
1140
+ # DateTime.new(2020, 1, 1), DateTime.new(2020, 1, 1, 0, 0, 1, 0), "1ms"
1141
+ # )[0..2]
1142
+ # # =>
1143
+ # # shape: (3,)
1144
+ # # Series: '' [datetime[μs]]
1145
+ # # [
1146
+ # # 2020-01-01 00:00:00
1147
+ # # 2020-01-01 00:00:00.001
1148
+ # # 2020-01-01 00:00:00.002
1149
+ # # ]
1150
+ #
1151
+ # @example
1152
+ # date.diff.dt.milliseconds
1153
+ # # =>
1154
+ # # shape: (3,)
1155
+ # # Series: '' [i64]
1156
+ # # [
1157
+ # # null
1158
+ # # 1
1159
+ # # 1
1160
+ # # ]
1161
+ def milliseconds
1162
+ super
1163
+ end
1164
+
1165
+ # Extract the microseconds from a Duration type.
1166
+ #
1167
+ # @return [Series]
1168
+ #
1169
+ # @example
1170
+ # date = Polars.date_range(
1171
+ # DateTime.new(2020, 1, 1), DateTime.new(2020, 1, 1, 0, 0, 1, 0), "1ms"
1172
+ # )[0..2]
1173
+ # # =>
1174
+ # # shape: (3,)
1175
+ # # Series: '' [datetime[μs]]
1176
+ # # [
1177
+ # # 2020-01-01 00:00:00
1178
+ # # 2020-01-01 00:00:00.001
1179
+ # # 2020-01-01 00:00:00.002
1180
+ # # ]
1181
+ #
1182
+ # @example
1183
+ # date.diff.dt.microseconds
1184
+ # # =>
1185
+ # # shape: (3,)
1186
+ # # Series: '' [i64]
1187
+ # # [
1188
+ # # null
1189
+ # # 1000
1190
+ # # 1000
1191
+ # # ]
1192
+ def microseconds
1193
+ super
1194
+ end
1195
+
1196
+ # Extract the nanoseconds from a Duration type.
1197
+ #
1198
+ # @return [Series]
1199
+ #
1200
+ # @example
1201
+ # date = Polars.date_range(
1202
+ # DateTime.new(2020, 1, 1), DateTime.new(2020, 1, 1, 0, 0, 1, 0), "1ms"
1203
+ # )[0..2]
1204
+ # # =>
1205
+ # # shape: (3,)
1206
+ # # Series: '' [datetime[μs]]
1207
+ # # [
1208
+ # # 2020-01-01 00:00:00
1209
+ # # 2020-01-01 00:00:00.001
1210
+ # # 2020-01-01 00:00:00.002
1211
+ # # ]
1212
+ #
1213
+ # @example
1214
+ # date.diff.dt.nanoseconds
1215
+ # # =>
1216
+ # # shape: (3,)
1217
+ # # Series: '' [i64]
1218
+ # # [
1219
+ # # null
1220
+ # # 1000000
1221
+ # # 1000000
1222
+ # # ]
1223
+ def nanoseconds
1224
+ super
1225
+ end
1226
+
1227
+ # Offset this date by a relative time offset.
1228
+ #
1229
+ # This differs from `Polars.col("foo") + timedelta` in that it can
1230
+ # take months and leap years into account. Note that only a single minus
1231
+ # sign is allowed in the `by` string, as the first character.
1232
+ #
1233
+ # @param by [String]
1234
+ # The offset is dictated by the following string language:
1235
+ #
1236
+ # - 1ns (1 nanosecond)
1237
+ # - 1us (1 microsecond)
1238
+ # - 1ms (1 millisecond)
1239
+ # - 1s (1 second)
1240
+ # - 1m (1 minute)
1241
+ # - 1h (1 hour)
1242
+ # - 1d (1 day)
1243
+ # - 1w (1 week)
1244
+ # - 1mo (1 calendar month)
1245
+ # - 1y (1 calendar year)
1246
+ # - 1i (1 index count)
1247
+ #
1248
+ # @return [Series]
1249
+ #
1250
+ # @example
1251
+ # dates = Polars.date_range(DateTime.new(2000, 1, 1), DateTime.new(2005, 1, 1), "1y")
1252
+ # # =>
1253
+ # # shape: (6,)
1254
+ # # Series: '' [datetime[μs]]
1255
+ # # [
1256
+ # # 2000-01-01 00:00:00
1257
+ # # 2001-01-01 00:00:00
1258
+ # # 2002-01-01 00:00:00
1259
+ # # 2003-01-01 00:00:00
1260
+ # # 2004-01-01 00:00:00
1261
+ # # 2005-01-01 00:00:00
1262
+ # # ]
1263
+ #
1264
+ # @example
1265
+ # dates.dt.offset_by("1y").alias("date_plus_1y")
1266
+ # # =>
1267
+ # # shape: (6,)
1268
+ # # Series: 'date_plus_1y' [datetime[μs]]
1269
+ # # [
1270
+ # # 2001-01-01 00:00:00
1271
+ # # 2002-01-01 00:00:00
1272
+ # # 2003-01-01 00:00:00
1273
+ # # 2004-01-01 00:00:00
1274
+ # # 2005-01-01 00:00:00
1275
+ # # 2006-01-01 00:00:00
1276
+ # # ]
1277
+ #
1278
+ # @example
1279
+ # dates.dt.offset_by("-1y2mo").alias("date_minus_1y_2mon")
1280
+ # # =>
1281
+ # # shape: (6,)
1282
+ # # Series: 'date_minus_1y_2mon' [datetime[μs]]
1283
+ # # [
1284
+ # # 1998-11-01 00:00:00
1285
+ # # 1999-11-01 00:00:00
1286
+ # # 2000-11-01 00:00:00
1287
+ # # 2001-11-01 00:00:00
1288
+ # # 2002-11-01 00:00:00
1289
+ # # 2003-11-01 00:00:00
1290
+ # # ]
1291
+ def offset_by(by)
1292
+ super
1293
+ end
1294
+
1295
+ # Divide the date/ datetime range into buckets.
1296
+ #
1297
+ # Each date/datetime is mapped to the start of its bucket.
1298
+ #
1299
+ # The `every` and `offset` argument are created with the
1300
+ # the following string language:
1301
+ #
1302
+ # 1ns # 1 nanosecond
1303
+ # 1us # 1 microsecond
1304
+ # 1ms # 1 millisecond
1305
+ # 1s # 1 second
1306
+ # 1m # 1 minute
1307
+ # 1h # 1 hour
1308
+ # 1d # 1 day
1309
+ # 1w # 1 week
1310
+ # 1mo # 1 calendar month
1311
+ # 1y # 1 calendar year
1312
+ #
1313
+ # 3d12h4m25s # 3 days, 12 hours, 4 minutes, and 25 seconds
1314
+ #
1315
+ # @param every [String]
1316
+ # Every interval start and period length.
1317
+ # @param offset [String]
1318
+ # Offset the window.
1319
+ #
1320
+ # @return [Series]
1321
+ #
1322
+ # @example
1323
+ # start = DateTime.new(2001, 1, 1)
1324
+ # stop = DateTime.new(2001, 1, 2)
1325
+ # s = Polars.date_range(start, stop, "165m", name: "dates")
1326
+ # # =>
1327
+ # # shape: (9,)
1328
+ # # Series: 'dates' [datetime[μs]]
1329
+ # # [
1330
+ # # 2001-01-01 00:00:00
1331
+ # # 2001-01-01 02:45:00
1332
+ # # 2001-01-01 05:30:00
1333
+ # # 2001-01-01 08:15:00
1334
+ # # 2001-01-01 11:00:00
1335
+ # # 2001-01-01 13:45:00
1336
+ # # 2001-01-01 16:30:00
1337
+ # # 2001-01-01 19:15:00
1338
+ # # 2001-01-01 22:00:00
1339
+ # # ]
1340
+ #
1341
+ # @example
1342
+ # s.dt.truncate("1h")
1343
+ # # =>
1344
+ # # shape: (9,)
1345
+ # # Series: 'dates' [datetime[μs]]
1346
+ # # [
1347
+ # # 2001-01-01 00:00:00
1348
+ # # 2001-01-01 02:00:00
1349
+ # # 2001-01-01 05:00:00
1350
+ # # 2001-01-01 08:00:00
1351
+ # # 2001-01-01 11:00:00
1352
+ # # 2001-01-01 13:00:00
1353
+ # # 2001-01-01 16:00:00
1354
+ # # 2001-01-01 19:00:00
1355
+ # # 2001-01-01 22:00:00
1356
+ # # ]
1357
+ #
1358
+ # @example
1359
+ # start = DateTime.new(2001, 1, 1)
1360
+ # stop = DateTime.new(2001, 1, 1, 1)
1361
+ # s = Polars.date_range(start, stop, "10m", name: "dates")
1362
+ # # =>
1363
+ # # shape: (7,)
1364
+ # # Series: 'dates' [datetime[μs]]
1365
+ # # [
1366
+ # # 2001-01-01 00:00:00
1367
+ # # 2001-01-01 00:10:00
1368
+ # # 2001-01-01 00:20:00
1369
+ # # 2001-01-01 00:30:00
1370
+ # # 2001-01-01 00:40:00
1371
+ # # 2001-01-01 00:50:00
1372
+ # # 2001-01-01 01:00:00
1373
+ # # ]
1374
+ #
1375
+ # @example
1376
+ # s.dt.truncate("30m")
1377
+ # # =>
1378
+ # # shape: (7,)
1379
+ # # Series: 'dates' [datetime[μs]]
1380
+ # # [
1381
+ # # 2001-01-01 00:00:00
1382
+ # # 2001-01-01 00:00:00
1383
+ # # 2001-01-01 00:00:00
1384
+ # # 2001-01-01 00:30:00
1385
+ # # 2001-01-01 00:30:00
1386
+ # # 2001-01-01 00:30:00
1387
+ # # 2001-01-01 01:00:00
1388
+ # # ]
1389
+ def truncate(every, offset: nil)
1390
+ super
1391
+ end
1392
+
1393
+ # Divide the date/ datetime range into buckets.
1394
+ #
1395
+ # Each date/datetime in the first half of the interval
1396
+ # is mapped to the start of its bucket.
1397
+ # Each date/datetime in the seconod half of the interval
1398
+ # is mapped to the end of its bucket.
1399
+ #
1400
+ # The `every` and `offset` argument are created with the
1401
+ # the following string language:
1402
+ #
1403
+ # 1ns # 1 nanosecond
1404
+ # 1us # 1 microsecond
1405
+ # 1ms # 1 millisecond
1406
+ # 1s # 1 second
1407
+ # 1m # 1 minute
1408
+ # 1h # 1 hour
1409
+ # 1d # 1 day
1410
+ # 1w # 1 week
1411
+ # 1mo # 1 calendar month
1412
+ # 1y # 1 calendar year
1413
+ #
1414
+ # 3d12h4m25s # 3 days, 12 hours, 4 minutes, and 25 seconds
1415
+ #
1416
+ # @param every [String]
1417
+ # Every interval start and period length.
1418
+ # @param offset [String]
1419
+ # Offset the window.
1420
+ #
1421
+ # @return [Series]
1422
+ #
1423
+ # @note
1424
+ # This functionality is currently experimental and may
1425
+ # change without it being considered a breaking change.
1426
+ #
1427
+ # @example
1428
+ # start = DateTime.new(2001, 1, 1)
1429
+ # stop = DateTime.new(2001, 1, 2)
1430
+ # s = Polars.date_range(start, stop, "165m", name: "dates")
1431
+ # # =>
1432
+ # # shape: (9,)
1433
+ # # Series: 'dates' [datetime[μs]]
1434
+ # # [
1435
+ # # 2001-01-01 00:00:00
1436
+ # # 2001-01-01 02:45:00
1437
+ # # 2001-01-01 05:30:00
1438
+ # # 2001-01-01 08:15:00
1439
+ # # 2001-01-01 11:00:00
1440
+ # # 2001-01-01 13:45:00
1441
+ # # 2001-01-01 16:30:00
1442
+ # # 2001-01-01 19:15:00
1443
+ # # 2001-01-01 22:00:00
1444
+ # # ]
1445
+ #
1446
+ # @example
1447
+ # s.dt.round("1h")
1448
+ # # =>
1449
+ # # shape: (9,)
1450
+ # # Series: 'dates' [datetime[μs]]
1451
+ # # [
1452
+ # # 2001-01-01 00:00:00
1453
+ # # 2001-01-01 03:00:00
1454
+ # # 2001-01-01 06:00:00
1455
+ # # 2001-01-01 08:00:00
1456
+ # # 2001-01-01 11:00:00
1457
+ # # 2001-01-01 14:00:00
1458
+ # # 2001-01-01 17:00:00
1459
+ # # 2001-01-01 19:00:00
1460
+ # # 2001-01-01 22:00:00
1461
+ # # ]
1462
+ #
1463
+ # @example
1464
+ # start = DateTime.new(2001, 1, 1)
1465
+ # stop = DateTime.new(2001, 1, 1, 1)
1466
+ # s = Polars.date_range(start, stop, "10m", name: "dates")
1467
+ # s.dt.round("30m")
1468
+ # # =>
1469
+ # # shape: (7,)
1470
+ # # Series: 'dates' [datetime[μs]]
1471
+ # # [
1472
+ # # 2001-01-01 00:00:00
1473
+ # # 2001-01-01 00:00:00
1474
+ # # 2001-01-01 00:30:00
1475
+ # # 2001-01-01 00:30:00
1476
+ # # 2001-01-01 00:30:00
1477
+ # # 2001-01-01 01:00:00
1478
+ # # 2001-01-01 01:00:00
1479
+ # # ]
1480
+ def round(every, offset: nil)
1481
+ super
1482
+ end
1483
+ end
1484
+ end