done
This commit is contained in:
@ -0,0 +1,56 @@
|
||||
# Arithmetic tests specific to DatetimeIndex are generally about `freq`
|
||||
# rentention or inference. Other arithmetic tests belong in
|
||||
# tests/arithmetic/test_datetime64.py
|
||||
import pytest
|
||||
|
||||
from pandas import (
|
||||
Timedelta,
|
||||
TimedeltaIndex,
|
||||
Timestamp,
|
||||
date_range,
|
||||
timedelta_range,
|
||||
)
|
||||
import pandas._testing as tm
|
||||
|
||||
|
||||
class TestDatetimeIndexArithmetic:
|
||||
def test_add_timedelta_preserves_freq(self):
|
||||
# GH#37295 should hold for any DTI with freq=None or Tick freq
|
||||
tz = "Canada/Eastern"
|
||||
dti = date_range(
|
||||
start=Timestamp("2019-03-26 00:00:00-0400", tz=tz),
|
||||
end=Timestamp("2020-10-17 00:00:00-0400", tz=tz),
|
||||
freq="D",
|
||||
)
|
||||
result = dti + Timedelta(days=1)
|
||||
assert result.freq == dti.freq
|
||||
|
||||
def test_sub_datetime_preserves_freq(self, tz_naive_fixture):
|
||||
# GH#48818
|
||||
dti = date_range("2016-01-01", periods=12, tz=tz_naive_fixture)
|
||||
|
||||
res = dti - dti[0]
|
||||
expected = timedelta_range("0 Days", "11 Days")
|
||||
tm.assert_index_equal(res, expected)
|
||||
assert res.freq == expected.freq
|
||||
|
||||
@pytest.mark.xfail(
|
||||
reason="The inherited freq is incorrect bc dti.freq is incorrect "
|
||||
"https://github.com/pandas-dev/pandas/pull/48818/files#r982793461"
|
||||
)
|
||||
def test_sub_datetime_preserves_freq_across_dst(self):
|
||||
# GH#48818
|
||||
ts = Timestamp("2016-03-11", tz="US/Pacific")
|
||||
dti = date_range(ts, periods=4)
|
||||
|
||||
res = dti - dti[0]
|
||||
expected = TimedeltaIndex(
|
||||
[
|
||||
Timedelta(days=0),
|
||||
Timedelta(days=1),
|
||||
Timedelta(days=2),
|
||||
Timedelta(days=2, hours=23),
|
||||
]
|
||||
)
|
||||
tm.assert_index_equal(res, expected)
|
||||
assert res.freq == expected.freq
|
Reference in New Issue
Block a user