| 3384 | |
| 3385 | |
| 3386 | class FFill(MapOverlap): |
| 3387 | _parameters = ["frame", "limit"] |
| 3388 | _defaults = {"limit": None} |
| 3389 | func = M.ffill |
| 3390 | enforce_metadata = True |
| 3391 | transform_divisions = False |
| 3392 | clear_divisions = False |
| 3393 | align_dataframes = True |
| 3394 | |
| 3395 | def _divisions(self): |
| 3396 | return self.frame.divisions |
| 3397 | |
| 3398 | @functools.cached_property |
| 3399 | def _meta(self): |
| 3400 | return self.frame._meta |
| 3401 | |
| 3402 | def _simplify_up(self, parent, dependents): |
| 3403 | if isinstance(parent, Projection): |
| 3404 | return plain_column_projection(self, parent, dependents) |
| 3405 | |
| 3406 | @functools.cached_property |
| 3407 | def kwargs(self): |
| 3408 | return dict(limit=self.limit) |
| 3409 | |
| 3410 | @property |
| 3411 | def before(self): |
| 3412 | return 1 if self.limit is None else self.limit |
| 3413 | |
| 3414 | @property |
| 3415 | def after(self): |
| 3416 | return 0 |
| 3417 | |
| 3418 | |
| 3419 | class BFill(FFill): |