DatetimeIndex + ndarray[int] wrong, reverse op errors · Issue #19123 · pandas-dev/pandas (original) (raw)
In both 0.22.0 and 1265f66
dti = pd.date_range('2016-01-01', periods=3, freq='D')
tdi = pd.TimedeltaIndex(['1 day', '2days', '3 days'], freq='D')
arr = np.array([1, 2, 3], dtype=np.int64)
>>> dti + arr
DatetimeIndex(['2016-01-01', '2016-01-02', '2016-01-03'], dtype='datetime64[ns]', freq='86400000000001N')
>>> dti - arr
DatetimeIndex(['2015-12-31 23:59:59.999999999',
'2016-01-01 23:59:59.999999998',
'2016-01-02 23:59:59.999999997'],
dtype='datetime64[ns]', freq='86399999999999N')
>>> arr + dti
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'numpy.ndarray' and 'DatetimeIndex'
>>> tdi + arr
TimedeltaIndex(['1 days 00:00:00.000000', '2 days 00:00:00.000000',
'3 days 00:00:00.000000'],
dtype='timedelta64[ns]', freq='86400000000001N')
>>> arr + tdi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'numpy.ndarray' and 'TimedeltaIndex'
>>> tdi - arr
TimedeltaIndex(['0 days 23:59:59.999999', '1 days 23:59:59.999999',
'2 days 23:59:59.999999'],
dtype='timedelta64[ns]', freq='86399999999999N')
>>> arr - tdi
TimedeltaIndex(['-1 days +00:00:00.000000', '-2 days +00:00:00.000000',
'-3 days +00:00:00.000000'],
dtype='timedelta64[ns]', freq='-86399999999999N')
Expected:
dti = pd.date_range('2016-01-01', periods=3, freq='D')
tdi = pd.TimedeltaIndex(['1 day', '2days', '3 days'], freq='D')
arr = np.array([1, 2, 3], dtype=np.int64)
>>> dti + arr
DatetimeIndex(['2016-01-02', '2016-01-04', '2016-01-06'], dtype='datetime64[ns]', freq='2D')
>>> arr + dti
DatetimeIndex(['2016-01-02', '2016-01-04', '2016-01-06'], dtype='datetime64[ns]', freq='2D')
>>> tdi + arr
TimedeltaIndex(['2 days', '4 days', '6 days'], dtype='timedelta64[ns]', freq='2D')
>>> arr + tdi
TimedeltaIndex(['2 days', '4 days', '6 days'], dtype='timedelta64[ns]', freq='2D')
>>> tdi - arr
TimedeltaIndex(['0 days', '0 days', '0 days'], dtype='timedelta64[ns]', freq=None)
>>> arr - tdi
TimedeltaIndex(['0 days', '0 days', '0 days'], dtype='timedelta64[ns]', freq=None)