Class: Polars::DateTimeExpr
- Inherits:
-
Object
- Object
- Polars::DateTimeExpr
- Defined in:
- lib/polars/date_time_expr.rb
Overview
Namespace for datetime related expressions.
Instance Method Summary collapse
-
#cast_time_unit(tu) ⇒ Expr
Cast the underlying data to another time unit.
-
#combine(time, time_unit: "us") ⇒ Expr
Create a naive Datetime from an existing Date/Datetime expression and a Time.
-
#convert_time_zone(tz) ⇒ Expr
Set time zone for a Series of type Datetime.
-
#date ⇒ Expr
Date.
-
#datetime ⇒ Expr
Datetime.
-
#day ⇒ Expr
Extract day from underlying Date representation.
-
#days ⇒ Expr
Extract the days from a Duration type.
-
#epoch(tu = "us") ⇒ Expr
Get the time passed since the Unix EPOCH in the give time unit.
-
#hour ⇒ Expr
Extract hour from underlying DateTime representation.
-
#hours ⇒ Expr
Extract the hours from a Duration type.
-
#is_leap_year ⇒ Expr
Determine whether the year of the underlying date is a leap year.
-
#iso_year ⇒ Expr
Extract ISO year from underlying Date representation.
-
#microsecond ⇒ Expr
Extract microseconds from underlying DateTime representation.
-
#microseconds ⇒ Expr
Extract the microseconds from a Duration type.
-
#millisecond ⇒ Expr
Extract milliseconds from underlying DateTime representation.
-
#milliseconds ⇒ Expr
Extract the milliseconds from a Duration type.
-
#minute ⇒ Expr
Extract minutes from underlying DateTime representation.
-
#minutes ⇒ Expr
Extract the minutes from a Duration type.
-
#month ⇒ Expr
Extract month from underlying Date representation.
-
#month_end ⇒ Expr
Roll forward to the last day of the month.
-
#month_start ⇒ Expr
Roll backward to the first day of the month.
-
#nanosecond ⇒ Expr
Extract nanoseconds from underlying DateTime representation.
-
#nanoseconds ⇒ Expr
Extract the nanoseconds from a Duration type.
-
#offset_by(by) ⇒ Expr
Offset this date by a relative time offset.
-
#ordinal_day ⇒ Expr
Extract ordinal day from underlying Date representation.
-
#quarter ⇒ Expr
Extract quarter from underlying Date representation.
-
#replace_time_zone(tz, use_earliest: nil, ambiguous: "raise") ⇒ Expr
Cast time zone for a Series of type Datetime.
-
#round(every, offset: nil) ⇒ Expr
Divide the date/datetime range into buckets.
-
#second(fractional: false) ⇒ Expr
Extract seconds from underlying DateTime representation.
-
#seconds ⇒ Expr
Extract the seconds from a Duration type.
-
#strftime(fmt) ⇒ Expr
Format Date/datetime with a formatting rule.
-
#time ⇒ Expr
Time.
-
#timestamp(tu = "us") ⇒ Expr
Return a timestamp in the given time unit.
-
#truncate(every, offset: nil, use_earliest: nil) ⇒ Expr
Divide the date/datetime range into buckets.
-
#week ⇒ Expr
Extract the week from the underlying Date representation.
-
#weekday ⇒ Expr
Extract the week day from the underlying Date representation.
-
#with_time_unit(tu) ⇒ Expr
Set time unit of a Series of dtype Datetime or Duration.
-
#year ⇒ Expr
Extract year from underlying Date representation.
Instance Method Details
#cast_time_unit(tu) ⇒ Expr
Cast the underlying data to another time unit. This may lose precision.
980 981 982 |
# File 'lib/polars/date_time_expr.rb', line 980 def cast_time_unit(tu) Utils.wrap_expr(_rbexpr.dt_cast_time_unit(tu)) end |
#combine(time, time_unit: "us") ⇒ Expr
Create a naive Datetime from an existing Date/Datetime expression and a Time.
If the underlying expression is a Datetime then its time component is replaced, and if it is a Date then a new Datetime is created by combining the two values.
237 238 239 240 241 242 243 |
# File 'lib/polars/date_time_expr.rb', line 237 def combine(time, time_unit: "us") unless time.is_a?(Time) || time.is_a?(Expr) raise TypeError, "expected 'time' to be a Ruby time or Polars expression, found #{time}" end time = Utils.expr_to_lit_or_expr(time) Utils.wrap_expr(_rbexpr.dt_combine(time._rbexpr, time_unit)) end |
#convert_time_zone(tz) ⇒ Expr
Set time zone for a Series of type Datetime.
1021 1022 1023 |
# File 'lib/polars/date_time_expr.rb', line 1021 def convert_time_zone(tz) Utils.wrap_expr(_rbexpr.dt_convert_time_zone(tz)) end |
#date ⇒ Expr
Date
615 616 617 |
# File 'lib/polars/date_time_expr.rb', line 615 def date Utils.wrap_expr(_rbexpr.dt_date) end |
#datetime ⇒ Expr
Datetime
622 623 624 |
# File 'lib/polars/date_time_expr.rb', line 622 def datetime Utils.wrap_expr(_rbexpr.dt_datetime) end |
#day ⇒ Expr
Extract day from underlying Date representation.
Applies to Date and Datetime columns.
Returns the day of month starting from 1. The return value ranges from 1 to 31. (The last day of month differs by months.)
553 554 555 |
# File 'lib/polars/date_time_expr.rb', line 553 def day Utils.wrap_expr(_rbexpr.day) end |
#days ⇒ Expr
Extract the days from a Duration type.
1069 1070 1071 |
# File 'lib/polars/date_time_expr.rb', line 1069 def days Utils.wrap_expr(_rbexpr.duration_days) end |
#epoch(tu = "us") ⇒ Expr
Get the time passed since the Unix EPOCH in the give time unit.
863 864 865 866 867 868 869 870 871 872 873 |
# File 'lib/polars/date_time_expr.rb', line 863 def epoch(tu = "us") if Utils::DTYPE_TEMPORAL_UNITS.include?(tu) (tu) elsif tu == "s" Utils.wrap_expr(_rbexpr.dt_epoch_seconds) elsif tu == "d" Utils.wrap_expr(_rbexpr).cast(:date).cast(:i32) else raise ArgumentError, "tu must be one of {{'ns', 'us', 'ms', 's', 'd'}}, got #{tu}" end end |
#hour ⇒ Expr
Extract hour from underlying DateTime representation.
Applies to Datetime columns.
Returns the hour number from 0 to 23.
663 664 665 |
# File 'lib/polars/date_time_expr.rb', line 663 def hour Utils.wrap_expr(_rbexpr.hour) end |
#hours ⇒ Expr
Extract the hours from a Duration type.
1103 1104 1105 |
# File 'lib/polars/date_time_expr.rb', line 1103 def hours Utils.wrap_expr(_rbexpr.duration_hours) end |
#is_leap_year ⇒ Expr
Determine whether the year of the underlying date is a leap year.
Applies to Date and Datetime columns.
321 322 323 |
# File 'lib/polars/date_time_expr.rb', line 321 def is_leap_year Utils.wrap_expr(_rbexpr.dt_is_leap_year) end |
#iso_year ⇒ Expr
Extract ISO year from underlying Date representation.
Applies to Date and Datetime columns.
Returns the year number in the ISO standard. This may not correspond with the calendar year.
333 334 335 |
# File 'lib/polars/date_time_expr.rb', line 333 def iso_year Utils.wrap_expr(_rbexpr.iso_year) end |
#microsecond ⇒ Expr
Extract microseconds from underlying DateTime representation.
Applies to Datetime columns.
821 822 823 |
# File 'lib/polars/date_time_expr.rb', line 821 def microsecond Utils.wrap_expr(_rbexpr.microsecond) end |
#microseconds ⇒ Expr
Extract the microseconds from a Duration type.
1250 1251 1252 |
# File 'lib/polars/date_time_expr.rb', line 1250 def microseconds Utils.wrap_expr(_rbexpr.duration_microseconds) end |
#millisecond ⇒ Expr
Extract milliseconds from underlying DateTime representation.
Applies to Datetime columns.
812 813 814 |
# File 'lib/polars/date_time_expr.rb', line 812 def millisecond Utils.wrap_expr(_rbexpr.millisecond) end |
#milliseconds ⇒ Expr
Extract the milliseconds from a Duration type.
1211 1212 1213 |
# File 'lib/polars/date_time_expr.rb', line 1211 def milliseconds Utils.wrap_expr(_rbexpr.duration_milliseconds) end |
#minute ⇒ Expr
Extract minutes from underlying DateTime representation.
Applies to Datetime columns.
Returns the minute number from 0 to 59.
704 705 706 |
# File 'lib/polars/date_time_expr.rb', line 704 def minute Utils.wrap_expr(_rbexpr.minute) end |
#minutes ⇒ Expr
Extract the minutes from a Duration type.
1137 1138 1139 |
# File 'lib/polars/date_time_expr.rb', line 1137 def minutes Utils.wrap_expr(_rbexpr.duration_minutes) end |
#month ⇒ Expr
Extract month from underlying Date representation.
Applies to Date and Datetime columns.
Returns the month number starting from 1. The return value ranges from 1 to 12.
416 417 418 |
# File 'lib/polars/date_time_expr.rb', line 416 def month Utils.wrap_expr(_rbexpr.month) end |
#month_end ⇒ Expr
Roll forward to the last day of the month.
1417 1418 1419 |
# File 'lib/polars/date_time_expr.rb', line 1417 def month_end Utils.wrap_expr(_rbexpr.dt_month_end) end |
#month_start ⇒ Expr
Roll backward to the first day of the month.
1381 1382 1383 |
# File 'lib/polars/date_time_expr.rb', line 1381 def month_start Utils.wrap_expr(_rbexpr.dt_month_start) end |
#nanosecond ⇒ Expr
Extract nanoseconds from underlying DateTime representation.
Applies to Datetime columns.
830 831 832 |
# File 'lib/polars/date_time_expr.rb', line 830 def nanosecond Utils.wrap_expr(_rbexpr.nanosecond) end |
#nanoseconds ⇒ Expr
Extract the nanoseconds from a Duration type.
1289 1290 1291 |
# File 'lib/polars/date_time_expr.rb', line 1289 def nanoseconds Utils.wrap_expr(_rbexpr.duration_nanoseconds) end |
#offset_by(by) ⇒ Expr
Offset this date by a relative time offset.
This differs from Polars.col("foo") + timedelta in that it can
take months and leap years into account. Note that only a single minus
sign is allowed in the by string, as the first character.
1344 1345 1346 1347 |
# File 'lib/polars/date_time_expr.rb', line 1344 def offset_by(by) by = Utils.parse_as_expression(by, str_as_lit: true) Utils.wrap_expr(_rbexpr.dt_offset_by(by)) end |
#ordinal_day ⇒ Expr
Extract ordinal day from underlying Date representation.
Applies to Date and Datetime columns.
Returns the day of month starting from 1. The return value ranges from 1 to 31. (The last day of month differs by months.)
601 602 603 |
# File 'lib/polars/date_time_expr.rb', line 601 def ordinal_day Utils.wrap_expr(_rbexpr.ordinal_day) end |
#quarter ⇒ Expr
Extract quarter from underlying Date representation.
Applies to Date and Datetime columns.
Returns the quarter ranging from 1 to 4.
374 375 376 |
# File 'lib/polars/date_time_expr.rb', line 374 def quarter Utils.wrap_expr(_rbexpr.quarter) end |
#replace_time_zone(tz, use_earliest: nil, ambiguous: "raise") ⇒ Expr
Cast time zone for a Series of type Datetime.
Different from convert_time_zone, this will also modify
the underlying timestamp,
1034 1035 1036 1037 1038 |
# File 'lib/polars/date_time_expr.rb', line 1034 def replace_time_zone(tz, use_earliest: nil, ambiguous: "raise") ambiguous = Utils.rename_use_earliest_to_ambiguous(use_earliest, ambiguous) ambiguous = Polars.lit(ambiguous) unless ambiguous.is_a?(Expr) Utils.wrap_expr(_rbexpr.dt_replace_time_zone(tz, ambiguous._rbexpr)) end |
#round(every, offset: nil) ⇒ Expr
The every and offset argument are created with the
the following small string formatting language:
1ns # 1 nanosecond 1us # 1 microsecond 1ms # 1 millisecond 1s # 1 second 1m # 1 minute 1h # 1 hour 1d # 1 day 1w # 1 week 1mo # 1 calendar month 1y # 1 calendar year
eg: 3d12h4m25s # 3 days, 12 hours, 4 minutes, and 25 seconds
This functionality is currently experimental and may change without it being considered a breaking change.
Divide the date/datetime range into buckets.
Each date/datetime in the first half of the interval is mapped to the start of its bucket. Each date/datetime in the seconod half of the interval is mapped to the end of its bucket.
213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'lib/polars/date_time_expr.rb', line 213 def round(every, offset: nil) if offset.nil? offset = "0ns" end Utils.wrap_expr( _rbexpr.dt_round( Utils._timedelta_to_pl_duration(every), Utils._timedelta_to_pl_duration(offset) ) ) end |
#second(fractional: false) ⇒ Expr
Extract seconds from underlying DateTime representation.
Applies to Datetime columns.
Returns the integer second number from 0 to 59, or a floating
point number from 0 < 60 if fractional: true that includes
any milli/micro/nanosecond component.
798 799 800 801 802 803 804 805 |
# File 'lib/polars/date_time_expr.rb', line 798 def second(fractional: false) sec = Utils.wrap_expr(_rbexpr.second) if fractional sec + (Utils.wrap_expr(_rbexpr.nanosecond) / Utils.lit(1_000_000_000.0)) else sec end end |
#seconds ⇒ Expr
Extract the seconds from a Duration type.
1172 1173 1174 |
# File 'lib/polars/date_time_expr.rb', line 1172 def seconds Utils.wrap_expr(_rbexpr.duration_seconds) end |
#strftime(fmt) ⇒ Expr
Format Date/datetime with a formatting rule.
250 251 252 |
# File 'lib/polars/date_time_expr.rb', line 250 def strftime(fmt) Utils.wrap_expr(_rbexpr.strftime(fmt)) end |
#time ⇒ Expr
Time
608 609 610 |
# File 'lib/polars/date_time_expr.rb', line 608 def time Utils.wrap_expr(_rbexpr.dt_time) end |
#timestamp(tu = "us") ⇒ Expr
Return a timestamp in the given time unit.
904 905 906 |
# File 'lib/polars/date_time_expr.rb', line 904 def (tu = "us") Utils.wrap_expr(_rbexpr.(tu)) end |
#truncate(every, offset: nil, use_earliest: nil) ⇒ Expr
The every and offset argument are created with the
the following small string formatting language:
1ns # 1 nanosecond 1us # 1 microsecond 1ms # 1 millisecond 1s # 1 second 1m # 1 minute 1h # 1 hour 1d # 1 day 1w # 1 week 1mo # 1 calendar month 1y # 1 calendar year
eg: 3d12h4m25s # 3 days, 12 hours, 4 minutes, and 25 seconds
Divide the date/datetime range into buckets.
Each date/datetime is mapped to the start of its bucket.
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/polars/date_time_expr.rb', line 100 def truncate(every, offset: nil, use_earliest: nil) if offset.nil? offset = "0ns" end if !every.is_a?(Expr) every = Utils._timedelta_to_pl_duration(every) end every = Utils.parse_as_expression(every, str_as_lit: true) Utils.wrap_expr( _rbexpr.dt_truncate( every, Utils._timedelta_to_pl_duration(offset), ) ) end |
#week ⇒ Expr
Extract the week from the underlying Date representation.
Applies to Date and Datetime columns.
Returns the ISO week number starting from 1. The return value ranges from 1 to 53. (The last week of year differs by years.)
458 459 460 |
# File 'lib/polars/date_time_expr.rb', line 458 def week Utils.wrap_expr(_rbexpr.week) end |
#weekday ⇒ Expr
Extract the week day from the underlying Date representation.
Applies to Date and Datetime columns.
Returns the ISO weekday number where monday = 1 and sunday = 7
505 506 507 |
# File 'lib/polars/date_time_expr.rb', line 505 def weekday Utils.wrap_expr(_rbexpr.weekday) end |
#with_time_unit(tu) ⇒ Expr
Set time unit of a Series of dtype Datetime or Duration.
This does not modify underlying data, and should be used to fix an incorrect time unit.
943 944 945 |
# File 'lib/polars/date_time_expr.rb', line 943 def with_time_unit(tu) Utils.wrap_expr(_rbexpr.dt_with_time_unit(tu)) end |
#year ⇒ Expr
Extract year from underlying Date representation.
Applies to Date and Datetime columns.
Returns the year number in the calendar date.
293 294 295 |
# File 'lib/polars/date_time_expr.rb', line 293 def year Utils.wrap_expr(_rbexpr.year) end |