Skip to content

Commit d0d75ea

Browse files
lfffkhKevsterAmp
authored andcommitted
Fix BUG: Cannot shift Intervals that are not closed='right' (the default) (pandas-dev#60407)
first
1 parent e926604 commit d0d75ea

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

pandas/core/arrays/interval.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1055,7 +1055,9 @@ def shift(self, periods: int = 1, fill_value: object = None) -> IntervalArray:
10551055
from pandas import Index
10561056

10571057
fill_value = Index(self._left, copy=False)._na_value
1058-
empty = IntervalArray.from_breaks([fill_value] * (empty_len + 1))
1058+
empty = IntervalArray.from_breaks(
1059+
[fill_value] * (empty_len + 1), closed=self.closed
1060+
)
10591061
else:
10601062
empty = self._from_sequence([fill_value] * empty_len, dtype=self.dtype)
10611063

pandas/tests/frame/methods/test_shift.py

+9
Original file line numberDiff line numberDiff line change
@@ -757,3 +757,12 @@ def test_shift_with_offsets_freq_empty(self):
757757
df_shifted = DataFrame(index=shifted_dates)
758758
result = df.shift(freq=offset)
759759
tm.assert_frame_equal(result, df_shifted)
760+
761+
def test_series_shift_interval_preserves_closed(self):
762+
# GH#60389
763+
ser = Series(
764+
[pd.Interval(1, 2, closed="right"), pd.Interval(2, 3, closed="right")]
765+
)
766+
result = ser.shift(1)
767+
expected = Series([np.nan, pd.Interval(1, 2, closed="right")])
768+
tm.assert_series_equal(result, expected)

0 commit comments

Comments
 (0)