Skip to content

Commit c25337b

Browse files
update for changes in pandas-dev#39953
1 parent 54ab960 commit c25337b

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed

pandas/_libs_numba/algos.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -583,28 +583,29 @@ def _pad_inplace(
583583
@numba.jit
584584
def _pad_inplace_no_limit(values: np.ndarray, mask: np.ndarray) -> None:
585585
N = len(values)
586-
val = values[0]
586+
val, prev_mask = values[0], mask[0]
587587
for i in range(N):
588588
if mask[i]:
589-
values[i] = val
589+
values[i], mask[i] = val, prev_mask
590590
else:
591-
val = values[i]
591+
val, prev_mask = values[i], mask[i]
592592

593593

594594
@numba.jit
595595
def _pad_inplace_with_limit(values: np.ndarray, mask: np.ndarray, limit: int) -> None:
596596
N = len(values)
597597
fill_count = 0
598-
val = values[0]
598+
val, prev_mask = values[0], mask[0]
599599
for i in range(N):
600600
if mask[i]:
601601
if fill_count >= limit:
602602
continue
603603
fill_count += 1
604-
values[i] = val
604+
values[i], mask[i] = val, prev_mask
605+
605606
else:
606607
fill_count = 0
607-
val = values[i]
608+
val, prev_mask = values[i], mask[i]
608609

609610

610611
def pad_2d_inplace(

pandas/core/missing.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -676,13 +676,12 @@ def _pad_1d(values, limit=None, mask=None):
676676
if mask is None:
677677
mask = isna(values)
678678
algos_numba.pad_inplace(values, mask, limit=limit)
679-
return values
679+
return values, mask
680680

681681

682682
def _backfill_1d(values, limit=None, mask=None):
683-
if mask is not None:
684-
mask = mask[::-1]
685-
return _pad_1d(values[::-1], limit, mask)[::-1]
683+
_, new_mask = _pad_1d(values[::-1], limit, mask[::-1] if mask is not None else None)
684+
return values, (mask if mask is not None else new_mask)
686685

687686

688687
def _pad_2d(values, limit=None, mask=None):
@@ -698,9 +697,10 @@ def _pad_2d(values, limit=None, mask=None):
698697

699698

700699
def _backfill_2d(values, limit=None, mask=None):
701-
if mask is not None:
702-
mask = mask[:, ::-1]
703-
return _pad_2d(values[:, ::-1], limit, mask)[:, ::-1]
700+
_, new_mask = _pad_2d(
701+
values[:, ::-1], limit, mask[:, ::-1] if mask is not None else None
702+
)
703+
return values, (mask if mask is not None else new_mask)
704704

705705

706706
_fill_methods = {"pad": _pad_1d, "backfill": _backfill_1d}

0 commit comments

Comments
 (0)