@@ -455,7 +455,7 @@ def _sub_period_array(self, other):
455
455
def _addsub_int_array (self , other , op ):
456
456
"""
457
457
Add or subtract array-like of integers equivalent to applying
458
- `shift ` pointwise.
458
+ `_time_shift ` pointwise.
459
459
460
460
Parameters
461
461
----------
@@ -553,6 +553,23 @@ def shift(self, periods, freq=None):
553
553
--------
554
554
Index.shift : Shift values of Index.
555
555
"""
556
+ return self ._time_shift (periods = periods , freq = freq )
557
+
558
+ def _time_shift (self , periods , freq = None ):
559
+ """
560
+ Shift each value by `periods`.
561
+
562
+ Note this is different from ExtensionArray.shift, which
563
+ shifts the *position* of each element, padding the end with
564
+ missing values.
565
+
566
+ Parameters
567
+ ----------
568
+ periods : int
569
+ Number of periods to shift by.
570
+ freq : pandas.DateOffset, pandas.Timedelta, or string
571
+ Frequency increment to shift by.
572
+ """
556
573
if freq is not None and freq != self .freq :
557
574
if isinstance (freq , compat .string_types ):
558
575
freq = frequencies .to_offset (freq )
@@ -600,7 +617,7 @@ def __add__(self, other):
600
617
elif lib .is_integer (other ):
601
618
# This check must come after the check for np.timedelta64
602
619
# as is_integer returns True for these
603
- result = self .shift (other )
620
+ result = self ._time_shift (other )
604
621
605
622
# array-like others
606
623
elif is_timedelta64_dtype (other ):
@@ -652,7 +669,7 @@ def __sub__(self, other):
652
669
elif lib .is_integer (other ):
653
670
# This check must come after the check for np.timedelta64
654
671
# as is_integer returns True for these
655
- result = self .shift (- other )
672
+ result = self ._time_shift (- other )
656
673
elif isinstance (other , Period ):
657
674
result = self ._sub_period (other )
658
675
0 commit comments