@@ -987,21 +987,21 @@ def test_dt64arr_sub_timestamp_tzaware(self, box_with_array):
987
987
tm .assert_equal (ser - ts , expected )
988
988
tm .assert_equal (ts - ser , - expected )
989
989
990
- def test_dt64arr_sub_NaT (self , box_with_array ):
990
+ def test_dt64arr_sub_NaT (self , box_with_array , unit ):
991
991
# GH#18808
992
- dti = DatetimeIndex ([NaT , Timestamp ("19900315" )])
992
+ dti = DatetimeIndex ([NaT , Timestamp ("19900315" )]). as_unit ( unit )
993
993
ser = tm .box_expected (dti , box_with_array )
994
994
995
995
result = ser - NaT
996
- expected = Series ([NaT , NaT ], dtype = "timedelta64[ns ]" )
996
+ expected = Series ([NaT , NaT ], dtype = f "timedelta64[{ unit } ]" )
997
997
expected = tm .box_expected (expected , box_with_array )
998
998
tm .assert_equal (result , expected )
999
999
1000
1000
dti_tz = dti .tz_localize ("Asia/Tokyo" )
1001
1001
ser_tz = tm .box_expected (dti_tz , box_with_array )
1002
1002
1003
1003
result = ser_tz - NaT
1004
- expected = Series ([NaT , NaT ], dtype = "timedelta64[ns ]" )
1004
+ expected = Series ([NaT , NaT ], dtype = f "timedelta64[{ unit } ]" )
1005
1005
expected = tm .box_expected (expected , box_with_array )
1006
1006
tm .assert_equal (result , expected )
1007
1007
@@ -1872,15 +1872,15 @@ def test_operators_datetimelike_invalid(
1872
1872
# Smoke test
1873
1873
op (arg2 )
1874
1874
1875
- def test_sub_single_tz (self ):
1875
+ def test_sub_single_tz (self , unit ):
1876
1876
# GH#12290
1877
- s1 = Series ([Timestamp ("2016-02-10" , tz = "America/Sao_Paulo" )])
1878
- s2 = Series ([Timestamp ("2016-02-08" , tz = "America/Sao_Paulo" )])
1877
+ s1 = Series ([Timestamp ("2016-02-10" , tz = "America/Sao_Paulo" )]). dt . as_unit ( unit )
1878
+ s2 = Series ([Timestamp ("2016-02-08" , tz = "America/Sao_Paulo" )]). dt . as_unit ( unit )
1879
1879
result = s1 - s2
1880
- expected = Series ([Timedelta ("2days" )])
1880
+ expected = Series ([Timedelta ("2days" )]). dt . as_unit ( unit )
1881
1881
tm .assert_series_equal (result , expected )
1882
1882
result = s2 - s1
1883
- expected = Series ([Timedelta ("-2days" )])
1883
+ expected = Series ([Timedelta ("-2days" )]). dt . as_unit ( unit )
1884
1884
tm .assert_series_equal (result , expected )
1885
1885
1886
1886
def test_dt64tz_series_sub_dtitz (self ):
@@ -1895,13 +1895,19 @@ def test_dt64tz_series_sub_dtitz(self):
1895
1895
res = ser - dti
1896
1896
tm .assert_series_equal (res , expected )
1897
1897
1898
- def test_sub_datetime_compat (self ):
1898
+ def test_sub_datetime_compat (self , unit ):
1899
1899
# see GH#14088
1900
- s = Series ([datetime (2016 , 8 , 23 , 12 , tzinfo = pytz .utc ), NaT ])
1900
+ ser = Series ([datetime (2016 , 8 , 23 , 12 , tzinfo = pytz .utc ), NaT ]). dt . as_unit ( unit )
1901
1901
dt = datetime (2016 , 8 , 22 , 12 , tzinfo = pytz .utc )
1902
- exp = Series ([Timedelta ("1 days" ), NaT ])
1903
- tm .assert_series_equal (s - dt , exp )
1904
- tm .assert_series_equal (s - Timestamp (dt ), exp )
1902
+ exp_unit = unit
1903
+ if unit in ["s" , "ms" ]:
1904
+ # The datetime object has "us" so we upcast
1905
+ exp_unit = "us"
1906
+ exp = Series ([Timedelta ("1 days" ), NaT ]).dt .as_unit (exp_unit )
1907
+ result = ser - dt
1908
+ tm .assert_series_equal (result , exp )
1909
+ result2 = ser - Timestamp (dt )
1910
+ tm .assert_series_equal (result2 , exp )
1905
1911
1906
1912
def test_dt64_series_add_mixed_tick_DateOffset (self ):
1907
1913
# GH#4532
@@ -1922,11 +1928,11 @@ def test_dt64_series_add_mixed_tick_DateOffset(self):
1922
1928
)
1923
1929
tm .assert_series_equal (result , expected )
1924
1930
1925
- def test_datetime64_ops_nat (self ):
1931
+ def test_datetime64_ops_nat (self , unit ):
1926
1932
# GH#11349
1927
- datetime_series = Series ([NaT , Timestamp ("19900315" )])
1928
- nat_series_dtype_timestamp = Series ([NaT , NaT ], dtype = "datetime64[ns ]" )
1929
- single_nat_dtype_datetime = Series ([NaT ], dtype = "datetime64[ns ]" )
1933
+ datetime_series = Series ([NaT , Timestamp ("19900315" )]). dt . as_unit ( unit )
1934
+ nat_series_dtype_timestamp = Series ([NaT , NaT ], dtype = f "datetime64[{ unit } ]" )
1935
+ single_nat_dtype_datetime = Series ([NaT ], dtype = f "datetime64[{ unit } ]" )
1930
1936
1931
1937
# subtraction
1932
1938
tm .assert_series_equal (- NaT + datetime_series , nat_series_dtype_timestamp )
@@ -2097,16 +2103,16 @@ def test_dti_sub_tdi(self, tz_naive_fixture):
2097
2103
with pytest .raises (TypeError , match = msg ):
2098
2104
tdi .values - dti
2099
2105
2100
- def test_dti_isub_tdi (self , tz_naive_fixture ):
2106
+ def test_dti_isub_tdi (self , tz_naive_fixture , unit ):
2101
2107
# GH#17558
2102
2108
tz = tz_naive_fixture
2103
- dti = DatetimeIndex ([Timestamp ("2017-01-01" , tz = tz )] * 10 )
2104
- tdi = pd .timedelta_range ("0 days" , periods = 10 )
2105
- expected = date_range ("2017-01-01" , periods = 10 , tz = tz , freq = "-1D" )
2109
+ dti = DatetimeIndex ([Timestamp ("2017-01-01" , tz = tz )] * 10 ). as_unit ( unit )
2110
+ tdi = pd .timedelta_range ("0 days" , periods = 10 , unit = unit )
2111
+ expected = date_range ("2017-01-01" , periods = 10 , tz = tz , freq = "-1D" , unit = unit )
2106
2112
expected = expected ._with_freq (None )
2107
2113
2108
2114
# isub with TimedeltaIndex
2109
- result = DatetimeIndex ([Timestamp ("2017-01-01" , tz = tz )] * 10 )
2115
+ result = DatetimeIndex ([Timestamp ("2017-01-01" , tz = tz )] * 10 ). as_unit ( unit )
2110
2116
result -= tdi
2111
2117
tm .assert_index_equal (result , expected )
2112
2118
@@ -2124,7 +2130,7 @@ def test_dti_isub_tdi(self, tz_naive_fixture):
2124
2130
tdi -= dti
2125
2131
2126
2132
# isub with timedelta64 array
2127
- result = DatetimeIndex ([Timestamp ("2017-01-01" , tz = tz )] * 10 )
2133
+ result = DatetimeIndex ([Timestamp ("2017-01-01" , tz = tz )] * 10 ). as_unit ( unit )
2128
2134
result -= tdi .values
2129
2135
tm .assert_index_equal (result , expected )
2130
2136
@@ -2158,13 +2164,13 @@ def test_dta_add_sub_index(self, tz_naive_fixture):
2158
2164
expected = dti - tdi
2159
2165
tm .assert_index_equal (result , expected )
2160
2166
2161
- def test_sub_dti_dti (self ):
2167
+ def test_sub_dti_dti (self , unit ):
2162
2168
# previously performed setop (deprecated in 0.16.0), now changed to
2163
2169
# return subtraction -> TimeDeltaIndex (GH ...)
2164
2170
2165
- dti = date_range ("20130101" , periods = 3 )
2166
- dti_tz = date_range ("20130101" , periods = 3 ).tz_localize ("US/Eastern" )
2167
- expected = TimedeltaIndex ([0 , 0 , 0 ])
2171
+ dti = date_range ("20130101" , periods = 3 , unit = unit )
2172
+ dti_tz = date_range ("20130101" , periods = 3 , unit = unit ).tz_localize ("US/Eastern" )
2173
+ expected = TimedeltaIndex ([0 , 0 , 0 ]). as_unit ( unit )
2168
2174
2169
2175
result = dti - dti
2170
2176
tm .assert_index_equal (result , expected )
@@ -2183,16 +2189,16 @@ def test_sub_dti_dti(self):
2183
2189
tm .assert_index_equal (dti , expected )
2184
2190
2185
2191
# different length raises ValueError
2186
- dti1 = date_range ("20130101" , periods = 3 )
2187
- dti2 = date_range ("20130101" , periods = 4 )
2192
+ dti1 = date_range ("20130101" , periods = 3 , unit = unit )
2193
+ dti2 = date_range ("20130101" , periods = 4 , unit = unit )
2188
2194
msg = "cannot add indices of unequal length"
2189
2195
with pytest .raises (ValueError , match = msg ):
2190
2196
dti1 - dti2
2191
2197
2192
2198
# NaN propagation
2193
- dti1 = DatetimeIndex (["2012-01-01" , np .nan , "2012-01-03" ])
2194
- dti2 = DatetimeIndex (["2012-01-02" , "2012-01-03" , np .nan ])
2195
- expected = TimedeltaIndex (["1 days" , np .nan , np .nan ])
2199
+ dti1 = DatetimeIndex (["2012-01-01" , np .nan , "2012-01-03" ]). as_unit ( unit )
2200
+ dti2 = DatetimeIndex (["2012-01-02" , "2012-01-03" , np .nan ]). as_unit ( unit )
2201
+ expected = TimedeltaIndex (["1 days" , np .nan , np .nan ]). as_unit ( unit )
2196
2202
result = dti2 - dti1
2197
2203
tm .assert_index_equal (result , expected )
2198
2204
@@ -2295,17 +2301,17 @@ def test_ops_nat_mixed_datetime64_timedelta64(self):
2295
2301
nat_series_dtype_timestamp ,
2296
2302
)
2297
2303
2298
- def test_ufunc_coercions (self ):
2299
- idx = date_range ("2011-01-01" , periods = 3 , freq = "2D" , name = "x" )
2304
+ def test_ufunc_coercions (self , unit ):
2305
+ idx = date_range ("2011-01-01" , periods = 3 , freq = "2D" , name = "x" , unit = unit )
2300
2306
2301
2307
delta = np .timedelta64 (1 , "D" )
2302
- exp = date_range ("2011-01-02" , periods = 3 , freq = "2D" , name = "x" )
2308
+ exp = date_range ("2011-01-02" , periods = 3 , freq = "2D" , name = "x" , unit = unit )
2303
2309
for result in [idx + delta , np .add (idx , delta )]:
2304
2310
assert isinstance (result , DatetimeIndex )
2305
2311
tm .assert_index_equal (result , exp )
2306
2312
assert result .freq == "2D"
2307
2313
2308
- exp = date_range ("2010-12-31" , periods = 3 , freq = "2D" , name = "x" )
2314
+ exp = date_range ("2010-12-31" , periods = 3 , freq = "2D" , name = "x" , unit = unit )
2309
2315
2310
2316
for result in [idx - delta , np .subtract (idx , delta )]:
2311
2317
assert isinstance (result , DatetimeIndex )
@@ -2318,13 +2324,17 @@ def test_ufunc_coercions(self):
2318
2324
delta = np .array (
2319
2325
[np .timedelta64 (1 , "D" ), np .timedelta64 (2 , "D" ), np .timedelta64 (3 , "D" )]
2320
2326
)
2321
- exp = DatetimeIndex (["2011-01-02" , "2011-01-05" , "2011-01-08" ], name = "x" )
2327
+ exp = DatetimeIndex (
2328
+ ["2011-01-02" , "2011-01-05" , "2011-01-08" ], name = "x"
2329
+ ).as_unit (unit )
2322
2330
2323
2331
for result in [idx + delta , np .add (idx , delta )]:
2324
2332
tm .assert_index_equal (result , exp )
2325
2333
assert result .freq == exp .freq
2326
2334
2327
- exp = DatetimeIndex (["2010-12-31" , "2011-01-01" , "2011-01-02" ], name = "x" )
2335
+ exp = DatetimeIndex (
2336
+ ["2010-12-31" , "2011-01-01" , "2011-01-02" ], name = "x"
2337
+ ).as_unit (unit )
2328
2338
for result in [idx - delta , np .subtract (idx , delta )]:
2329
2339
assert isinstance (result , DatetimeIndex )
2330
2340
tm .assert_index_equal (result , exp )
0 commit comments