MCPcopy Create free account
hub / github.com/dask/dask / Shift

Class Shift

dask/dataframe/dask_expr/_expr.py:3431–3472  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3429
3430
3431class Shift(MapOverlap):
3432 _parameters = ["frame", "periods", "freq"]
3433 _defaults = {"periods": 1, "freq": None}
3434
3435 func = M.shift
3436 enforce_metadata = True
3437 transform_divisions = False
3438 align_dataframes = True
3439
3440 @functools.cached_property
3441 def clear_divisions(self):
3442 # TODO We can do better if freq is given, but this needs adjustments in
3443 # map_partitions
3444 return True if self._divisions()[0] is None or self.freq is not None else False
3445
3446 def _divisions(self):
3447 if self.freq is None:
3448 return self.frame.divisions
3449 divisions = _calc_maybe_new_divisions(self.frame, self.periods, self.freq)
3450 if divisions is None:
3451 divisions = (None,) * (self.frame.npartitions + 1)
3452 return divisions
3453
3454 @functools.cached_property
3455 def _meta(self):
3456 return make_meta(meta_nonempty(self.frame._meta).shift(**self.kwargs))
3457
3458 @functools.cached_property
3459 def kwargs(self):
3460 return dict(periods=self.periods, freq=self.freq)
3461
3462 def _simplify_up(self, parent, dependents):
3463 if isinstance(parent, Projection):
3464 return plain_column_projection(self, parent, dependents)
3465
3466 @property
3467 def before(self):
3468 return self.periods if self.periods > 0 else 0
3469
3470 @property
3471 def after(self):
3472 return 0 if self.periods > 0 else -self.periods
3473
3474
3475class ShiftIndex(Blockwise):

Callers 1

shiftMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected