Skip to content

TST: series offset artithmetic tests #34582

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 9 commits into from
193 changes: 193 additions & 0 deletions pandas/tests/series/test_arithmetic.py
Original file line number Diff line number Diff line change
Expand Up @@ -679,6 +679,199 @@ def test_series_add_aware_naive_raises(self):
with pytest.raises(Exception, match=msg):
ser_utc + ser

@pytest.mark.filterwarnings(
"ignore:Adding/subtracting object-dtype array to DatetimeArray"
)
def test_series_add_daytime_offset(self):
# GH#19211
ser_daytime = pd.Series(
[
pd.Timestamp("2000-01-01"),
pd.Timestamp("2000-02-01"),
pd.Timestamp("2000-05-01"),
]
)
ser_offset = pd.Series(
[
pd.offsets.DateOffset(years=1),
pd.offsets.DateOffset(months=2),
pd.offsets.MonthEnd(),
]
)

result1 = ser_offset + ser_daytime
result2 = ser_daytime + ser_offset

expected = pd.Series(
[
pd.Timestamp("2001-01-01"),
pd.Timestamp("2000-04-01"),
pd.Timestamp("2000-05-31"),
]
)

tm.assert_series_equal(result1, expected)
tm.assert_series_equal(result2, expected)

@pytest.mark.filterwarnings(
"ignore:Adding/subtracting object-dtype array to DatetimeArray"
)
def test_series_add_daytime_offset_index(self):
# GH#19211
ser_daytime = pd.Series(
[
pd.Timestamp("2000-01-01"),
pd.Timestamp("2000-02-01"),
pd.Timestamp("2000-05-01"),
]
)
ser_offset = pd.Series(
[
pd.offsets.DateOffset(years=1),
pd.offsets.DateOffset(months=2),
pd.offsets.MonthEnd(),
]
)

result1 = pd.Index(ser_offset) + ser_daytime
result2 = ser_daytime + pd.Index(ser_offset)

expected = pd.Series(
[
pd.Timestamp("2001-01-01"),
pd.Timestamp("2000-04-01"),
pd.Timestamp("2000-05-31"),
]
)
tm.assert_series_equal(result1, expected)
tm.assert_series_equal(result2, expected)

@pytest.mark.filterwarnings(
"ignore:Adding/subtracting object-dtype array to DatetimeArray"
)
def test_series_add_daytime_index_offset(self):
# GH#19211
ser_daytime = pd.Series(
[
pd.Timestamp("2000-01-01"),
pd.Timestamp("2000-02-01"),
pd.Timestamp("2000-05-01"),
]
)
ser_offset = pd.Series(
[
pd.offsets.DateOffset(years=1),
pd.offsets.DateOffset(months=2),
pd.offsets.MonthEnd(),
]
)

result1 = ser_offset + pd.DatetimeIndex(ser_daytime)
result2 = pd.DatetimeIndex(ser_daytime) + ser_offset

expected = pd.Series(
[
pd.Timestamp("2001-01-01"),
pd.Timestamp("2000-04-01"),
pd.Timestamp("2000-05-31"),
]
)
tm.assert_series_equal(result1, expected)
tm.assert_series_equal(result2, expected)

@pytest.mark.filterwarnings(
"ignore:Adding/subtracting object-dtype array to DatetimeArray"
)
def test_series_sub_daytime_offset(self):
# GH#19211
ser_daytime = pd.Series(
[
pd.Timestamp("2000-01-01"),
pd.Timestamp("2000-03-29"),
pd.Timestamp("2000-05-15"),
]
)
ser_offset = pd.Series(
[
pd.offsets.DateOffset(years=1),
pd.offsets.DateOffset(months=2),
pd.offsets.MonthBegin(),
]
)

result = ser_daytime - ser_offset

expected = pd.Series(
[
pd.Timestamp("1999-1-1"),
pd.Timestamp("2000-1-29"),
pd.Timestamp("2000-05-01"),
]
)
tm.assert_series_equal(result, expected)

@pytest.mark.filterwarnings(
"ignore:Adding/subtracting object-dtype array to DatetimeArray"
)
def test_series_sub_daytime_offset_index(self):
# GH#19211
ser_daytime = pd.Series(
[
pd.Timestamp("2000-01-01"),
pd.Timestamp("2000-03-29"),
pd.Timestamp("2000-05-15"),
]
)
ser_offset = pd.Series(
[
pd.offsets.DateOffset(years=1),
pd.offsets.DateOffset(months=2),
pd.offsets.MonthBegin(),
]
)

result = ser_daytime - pd.Index(ser_offset)

expected = pd.Series(
[
pd.Timestamp("1999-1-1"),
pd.Timestamp("2000-1-29"),
pd.Timestamp("2000-05-01"),
]
)
tm.assert_series_equal(result, expected)

@pytest.mark.filterwarnings(
"ignore:Adding/subtracting object-dtype array to DatetimeArray"
)
def test_series_sub_daytime_index_offset(self):
# GH#19211
ser_daytime = pd.Series(
[
pd.Timestamp("2000-01-01"),
pd.Timestamp("2000-03-29"),
pd.Timestamp("2000-05-15"),
]
)
ser_offset = pd.Series(
[
pd.offsets.DateOffset(years=1),
pd.offsets.DateOffset(months=2),
pd.offsets.MonthBegin(),
]
)

result = pd.DatetimeIndex(ser_daytime) - ser_offset

expected = pd.Series(
[
pd.Timestamp("1999-1-1"),
pd.Timestamp("2000-1-29"),
pd.Timestamp("2000-05-01"),
]
)
tm.assert_series_equal(result, expected)

def test_datetime_understood(self):
# Ensures it doesn't fail to create the right series
# reported in issue#16726
Expand Down