Skip to content

Commit 7073358

Browse files
authored
Allow datetime values to be subtracted from a Series to create a TimedeltaSeries (#323)
1 parent 95885b8 commit 7073358

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

pandas-stubs/core/series.pyi

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from datetime import (
22
date,
3+
datetime,
34
time,
45
)
56
from typing import (
@@ -1218,7 +1219,9 @@ class Series(IndexOpsMixin, NDFrame, Generic[S1]):
12181219
def __rtruediv__(self, other: num | _ListLike | Series[S1]) -> Series: ...
12191220
def __rxor__(self, other: num | _ListLike | Series[S1]) -> Series[_bool]: ...
12201221
@overload
1221-
def __sub__(self, other: Timestamp | TimestampSeries) -> TimedeltaSeries: ...
1222+
def __sub__(
1223+
self, other: Timestamp | datetime | TimestampSeries
1224+
) -> TimedeltaSeries: ...
12221225
@overload
12231226
def __sub__(
12241227
self, other: Timedelta | TimedeltaSeries | TimedeltaIndex

tests/test_timefuncs.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,6 @@ def test_timedelta_series_arithmetic() -> None:
120120

121121

122122
def test_timestamp_timedelta_series_arithmetic() -> None:
123-
ts = pd.Timestamp("2022-03-05")
124-
s1 = pd.Series(["2022-03-05", "2022-03-06"])
125123
ts1 = pd.to_datetime(pd.Series(["2022-03-05", "2022-03-06"]))
126124
assert isinstance(ts1.iloc[0], pd.Timestamp)
127125
td1 = pd.to_timedelta([2, 3], "seconds")
@@ -141,6 +139,13 @@ def test_timestamp_timedelta_series_arithmetic() -> None:
141139
r6 = r1 * 4
142140
check(assert_type(r6, "TimedeltaSeries"), pd.Series, pd.Timedelta)
143141

142+
tsp1 = pd.Timestamp("2022-03-05")
143+
dt1 = dt.datetime(2022, 9, 1, 12, 5, 30)
144+
r7 = ts1 - tsp1
145+
check(assert_type(r7, "TimedeltaSeries"), pd.Series, pd.Timedelta)
146+
r8 = ts1 - dt1
147+
check(assert_type(r8, "TimedeltaSeries"), pd.Series, pd.Timedelta)
148+
144149

145150
def test_timestamp_dateoffset_arithmetic() -> None:
146151
ts = pd.Timestamp("2022-03-18")

0 commit comments

Comments
 (0)