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

Class Shift

dask/dataframe/dask_expr/_expr.py:3435–3476  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

shiftMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected