Skip to content

Commit d7fa5b3

Browse files
jbrockmendeljreback
authored andcommitted
implement test_scalar_compat (#19479)
1 parent 63d96f5 commit d7fa5b3

File tree

7 files changed

+284
-262
lines changed

7 files changed

+284
-262
lines changed

pandas/tests/indexes/datetimes/test_arithmetic.py

+59-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import pandas as pd
1111
from pandas.compat.numpy import np_datetime64_compat
1212
import pandas.util.testing as tm
13-
from pandas.errors import PerformanceWarning
13+
from pandas.errors import PerformanceWarning, NullFrequencyError
1414
from pandas import (Timestamp, Timedelta, Series,
1515
DatetimeIndex, TimedeltaIndex,
1616
date_range)
@@ -274,6 +274,64 @@ def test_dti_isub_int(self, tz, one):
274274
rng -= one
275275
tm.assert_index_equal(rng, expected)
276276

277+
# -------------------------------------------------------------
278+
# DatetimeIndex.shift is used in integer addition
279+
280+
def test_dti_shift_tzaware(self, tz):
281+
# GH#9903
282+
idx = pd.DatetimeIndex([], name='xxx', tz=tz)
283+
tm.assert_index_equal(idx.shift(0, freq='H'), idx)
284+
tm.assert_index_equal(idx.shift(3, freq='H'), idx)
285+
286+
idx = pd.DatetimeIndex(['2011-01-01 10:00', '2011-01-01 11:00'
287+
'2011-01-01 12:00'], name='xxx', tz=tz)
288+
tm.assert_index_equal(idx.shift(0, freq='H'), idx)
289+
exp = pd.DatetimeIndex(['2011-01-01 13:00', '2011-01-01 14:00'
290+
'2011-01-01 15:00'], name='xxx', tz=tz)
291+
tm.assert_index_equal(idx.shift(3, freq='H'), exp)
292+
exp = pd.DatetimeIndex(['2011-01-01 07:00', '2011-01-01 08:00'
293+
'2011-01-01 09:00'], name='xxx', tz=tz)
294+
tm.assert_index_equal(idx.shift(-3, freq='H'), exp)
295+
296+
def test_dti_shift_freqs(self):
297+
# test shift for DatetimeIndex and non DatetimeIndex
298+
# GH#8083
299+
drange = pd.date_range('20130101', periods=5)
300+
result = drange.shift(1)
301+
expected = pd.DatetimeIndex(['2013-01-02', '2013-01-03', '2013-01-04',
302+
'2013-01-05',
303+
'2013-01-06'], freq='D')
304+
tm.assert_index_equal(result, expected)
305+
306+
result = drange.shift(-1)
307+
expected = pd.DatetimeIndex(['2012-12-31', '2013-01-01', '2013-01-02',
308+
'2013-01-03', '2013-01-04'],
309+
freq='D')
310+
tm.assert_index_equal(result, expected)
311+
312+
result = drange.shift(3, freq='2D')
313+
expected = pd.DatetimeIndex(['2013-01-07', '2013-01-08', '2013-01-09',
314+
'2013-01-10',
315+
'2013-01-11'], freq='D')
316+
tm.assert_index_equal(result, expected)
317+
318+
def test_dti_shift_int(self):
319+
rng = date_range('1/1/2000', periods=20)
320+
321+
result = rng + 5
322+
expected = rng.shift(5)
323+
tm.assert_index_equal(result, expected)
324+
325+
result = rng - 5
326+
expected = rng.shift(-5)
327+
tm.assert_index_equal(result, expected)
328+
329+
def test_dti_shift_no_freq(self):
330+
# GH#19147
331+
dti = pd.DatetimeIndex(['2011-01-01 10:00', '2011-01-01'], freq=None)
332+
with pytest.raises(NullFrequencyError):
333+
dti.shift(2)
334+
277335
# -------------------------------------------------------------
278336
# Binary operations DatetimeIndex and timedelta-like
279337

pandas/tests/indexes/datetimes/test_datetime.py

+1-38
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import pytest
33

44
import numpy as np
5-
from datetime import date, timedelta, time, datetime
5+
from datetime import date, timedelta, time
66

77
import dateutil
88
import pandas as pd
@@ -16,31 +16,6 @@
1616
randn = np.random.randn
1717

1818

19-
class TestDatetimeIndexLikeTimestamp(object):
20-
# Tests for DatetimeIndex behaving like a vectorized Timestamp
21-
22-
def test_dti_date_out_of_range(self):
23-
# see gh-1475
24-
pytest.raises(ValueError, DatetimeIndex, ['1400-01-01'])
25-
pytest.raises(ValueError, DatetimeIndex, [datetime(1400, 1, 1)])
26-
27-
def test_timestamp_fields(self):
28-
# extra fields from DatetimeIndex like quarter and week
29-
idx = tm.makeDateIndex(100)
30-
31-
fields = ['dayofweek', 'dayofyear', 'week', 'weekofyear', 'quarter',
32-
'days_in_month', 'is_month_start', 'is_month_end',
33-
'is_quarter_start', 'is_quarter_end', 'is_year_start',
34-
'is_year_end', 'weekday_name']
35-
for f in fields:
36-
expected = getattr(idx, f)[-1]
37-
result = getattr(Timestamp(idx[-1]), f)
38-
assert result == expected
39-
40-
assert idx.freq == Timestamp(idx[-1], idx.freq).freq
41-
assert idx.freqstr == Timestamp(idx[-1], idx.freq).freqstr
42-
43-
4419
class TestDatetimeIndex(object):
4520

4621
def test_get_loc(self):
@@ -371,18 +346,6 @@ def test_isin(self):
371346
assert_almost_equal(index.isin([index[2], 5]),
372347
np.array([False, False, True, False]))
373348

374-
def test_time(self):
375-
rng = pd.date_range('1/1/2000', freq='12min', periods=10)
376-
result = pd.Index(rng).time
377-
expected = [t.time() for t in rng]
378-
assert (result == expected).all()
379-
380-
def test_date(self):
381-
rng = pd.date_range('1/1/2000', freq='12H', periods=10)
382-
result = pd.Index(rng).date
383-
expected = [t.date() for t in rng]
384-
assert (result == expected).all()
385-
386349
def test_does_not_convert_mixed_integer(self):
387350
df = tm.makeCustomDataframe(10, 10,
388351
data_gen_f=lambda *args, **kwargs: randn(),
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
""" generic tests from the Datetimelike class """
22

3-
import numpy as np
4-
import pandas as pd
53
from pandas.util import testing as tm
6-
from pandas import Series, Index, DatetimeIndex, date_range
4+
from pandas import DatetimeIndex, date_range
75

86
from ..datetimelike import DatetimeLike
97

@@ -27,31 +25,7 @@ def test_pickle_compat_construction(self):
2725
pass
2826

2927
def test_intersection(self):
30-
first = self.index
31-
second = self.index[5:]
32-
intersect = first.intersection(second)
33-
assert tm.equalContents(intersect, second)
34-
35-
# GH 10149
36-
cases = [klass(second.values) for klass in [np.array, Series, list]]
37-
for case in cases:
38-
result = first.intersection(case)
39-
assert tm.equalContents(result, second)
40-
41-
third = Index(['a', 'b', 'c'])
42-
result = first.intersection(third)
43-
expected = pd.Index([], dtype=object)
44-
tm.assert_index_equal(result, expected)
28+
pass # handled in test_setops
4529

4630
def test_union(self):
47-
first = self.index[:5]
48-
second = self.index[5:]
49-
everything = self.index
50-
union = first.union(second)
51-
assert tm.equalContents(union, everything)
52-
53-
# GH 10149
54-
cases = [klass(second.values) for klass in [np.array, Series, list]]
55-
for case in cases:
56-
result = first.union(case)
57-
assert tm.equalContents(result, everything)
31+
pass # handled in test_setops

pandas/tests/indexes/datetimes/test_misc.py

+1-77
Original file line numberDiff line numberDiff line change
@@ -4,53 +4,7 @@
44
import pandas as pd
55
import pandas.util.testing as tm
66
from pandas import (Index, DatetimeIndex, datetime, offsets,
7-
Float64Index, date_range, Timestamp)
8-
9-
10-
class TestDateTimeIndexToJulianDate(object):
11-
12-
def test_1700(self):
13-
r1 = Float64Index([2345897.5, 2345898.5, 2345899.5, 2345900.5,
14-
2345901.5])
15-
r2 = date_range(start=Timestamp('1710-10-01'), periods=5,
16-
freq='D').to_julian_date()
17-
assert isinstance(r2, Float64Index)
18-
tm.assert_index_equal(r1, r2)
19-
20-
def test_2000(self):
21-
r1 = Float64Index([2451601.5, 2451602.5, 2451603.5, 2451604.5,
22-
2451605.5])
23-
r2 = date_range(start=Timestamp('2000-02-27'), periods=5,
24-
freq='D').to_julian_date()
25-
assert isinstance(r2, Float64Index)
26-
tm.assert_index_equal(r1, r2)
27-
28-
def test_hour(self):
29-
r1 = Float64Index(
30-
[2451601.5, 2451601.5416666666666666, 2451601.5833333333333333,
31-
2451601.625, 2451601.6666666666666666])
32-
r2 = date_range(start=Timestamp('2000-02-27'), periods=5,
33-
freq='H').to_julian_date()
34-
assert isinstance(r2, Float64Index)
35-
tm.assert_index_equal(r1, r2)
36-
37-
def test_minute(self):
38-
r1 = Float64Index(
39-
[2451601.5, 2451601.5006944444444444, 2451601.5013888888888888,
40-
2451601.5020833333333333, 2451601.5027777777777777])
41-
r2 = date_range(start=Timestamp('2000-02-27'), periods=5,
42-
freq='T').to_julian_date()
43-
assert isinstance(r2, Float64Index)
44-
tm.assert_index_equal(r1, r2)
45-
46-
def test_second(self):
47-
r1 = Float64Index(
48-
[2451601.5, 2451601.500011574074074, 2451601.5000231481481481,
49-
2451601.5000347222222222, 2451601.5000462962962962])
50-
r2 = date_range(start=Timestamp('2000-02-27'), periods=5,
51-
freq='S').to_julian_date()
52-
assert isinstance(r2, Float64Index)
53-
tm.assert_index_equal(r1, r2)
7+
date_range, Timestamp)
548

559

5610
class TestTimeSeries(object):
@@ -129,17 +83,6 @@ def test_range_edges(self):
12983
'1970-01-03', '1970-01-04'])
13084
tm.assert_index_equal(idx, exp)
13185

132-
def test_datetimeindex_integers_shift(self):
133-
rng = date_range('1/1/2000', periods=20)
134-
135-
result = rng + 5
136-
expected = rng.shift(5)
137-
tm.assert_index_equal(result, expected)
138-
139-
result = rng - 5
140-
expected = rng.shift(-5)
141-
tm.assert_index_equal(result, expected)
142-
14386
def test_datetimeindex_repr_short(self):
14487
dr = date_range(start='1/1/2012', periods=1)
14588
repr(dr)
@@ -150,25 +93,6 @@ def test_datetimeindex_repr_short(self):
15093
dr = date_range(start='1/1/2012', periods=3)
15194
repr(dr)
15295

153-
def test_normalize(self):
154-
rng = date_range('1/1/2000 9:30', periods=10, freq='D')
155-
156-
result = rng.normalize()
157-
expected = date_range('1/1/2000', periods=10, freq='D')
158-
tm.assert_index_equal(result, expected)
159-
160-
rng_ns = pd.DatetimeIndex(np.array([1380585623454345752,
161-
1380585612343234312]).astype(
162-
"datetime64[ns]"))
163-
rng_ns_normalized = rng_ns.normalize()
164-
expected = pd.DatetimeIndex(np.array([1380585600000000000,
165-
1380585600000000000]).astype(
166-
"datetime64[ns]"))
167-
tm.assert_index_equal(rng_ns_normalized, expected)
168-
169-
assert result.is_normalized
170-
assert not rng.is_normalized
171-
17296

17397
class TestDatetime64(object):
17498

0 commit comments

Comments
 (0)