Separate TimedeltaIndex mul/div tests (#19848) · pandas-dev/pandas@ce77b79 (original) (raw)
`@@ -2,7 +2,7 @@
`
2
2
`import pytest
`
3
3
``
4
4
`import numpy as np
`
5
``
`-
from datetime import date, timedelta, time
`
``
5
`+
from datetime import date
`
6
6
``
7
7
`import dateutil
`
8
8
`import pandas as pd
`
`@@ -18,112 +18,6 @@
`
18
18
``
19
19
`class TestDatetimeIndex(object):
`
20
20
``
21
``
`-
def test_get_loc(self):
`
22
``
`-
idx = pd.date_range('2000-01-01', periods=3)
`
23
``
-
24
``
`-
for method in [None, 'pad', 'backfill', 'nearest']:
`
25
``
`-
assert idx.get_loc(idx[1], method) == 1
`
26
``
`-
assert idx.get_loc(idx[1].to_pydatetime(), method) == 1
`
27
``
`-
assert idx.get_loc(str(idx[1]), method) == 1
`
28
``
-
29
``
`-
if method is not None:
`
30
``
`-
assert idx.get_loc(idx[1], method,
`
31
``
`-
tolerance=pd.Timedelta('0 days')) == 1
`
32
``
-
33
``
`-
assert idx.get_loc('2000-01-01', method='nearest') == 0
`
34
``
`-
assert idx.get_loc('2000-01-01T12', method='nearest') == 1
`
35
``
-
36
``
`-
assert idx.get_loc('2000-01-01T12', method='nearest',
`
37
``
`-
tolerance='1 day') == 1
`
38
``
`-
assert idx.get_loc('2000-01-01T12', method='nearest',
`
39
``
`-
tolerance=pd.Timedelta('1D')) == 1
`
40
``
`-
assert idx.get_loc('2000-01-01T12', method='nearest',
`
41
``
`-
tolerance=np.timedelta64(1, 'D')) == 1
`
42
``
`-
assert idx.get_loc('2000-01-01T12', method='nearest',
`
43
``
`-
tolerance=timedelta(1)) == 1
`
44
``
`-
with tm.assert_raises_regex(ValueError,
`
45
``
`-
'unit abbreviation w/o a number'):
`
46
``
`-
idx.get_loc('2000-01-01T12', method='nearest', tolerance='foo')
`
47
``
`-
with pytest.raises(KeyError):
`
48
``
`-
idx.get_loc('2000-01-01T03', method='nearest', tolerance='2 hours')
`
49
``
`-
with pytest.raises(
`
50
``
`-
ValueError,
`
51
``
`-
match='tolerance size must match target index size'):
`
52
``
`-
idx.get_loc('2000-01-01', method='nearest',
`
53
``
`-
tolerance=[pd.Timedelta('1day').to_timedelta64(),
`
54
``
`-
pd.Timedelta('1day').to_timedelta64()])
`
55
``
-
56
``
`-
assert idx.get_loc('2000', method='nearest') == slice(0, 3)
`
57
``
`-
assert idx.get_loc('2000-01', method='nearest') == slice(0, 3)
`
58
``
-
59
``
`-
assert idx.get_loc('1999', method='nearest') == 0
`
60
``
`-
assert idx.get_loc('2001', method='nearest') == 2
`
61
``
-
62
``
`-
with pytest.raises(KeyError):
`
63
``
`-
idx.get_loc('1999', method='pad')
`
64
``
`-
with pytest.raises(KeyError):
`
65
``
`-
idx.get_loc('2001', method='backfill')
`
66
``
-
67
``
`-
with pytest.raises(KeyError):
`
68
``
`-
idx.get_loc('foobar')
`
69
``
`-
with pytest.raises(TypeError):
`
70
``
`-
idx.get_loc(slice(2))
`
71
``
-
72
``
`-
idx = pd.to_datetime(['2000-01-01', '2000-01-04'])
`
73
``
`-
assert idx.get_loc('2000-01-02', method='nearest') == 0
`
74
``
`-
assert idx.get_loc('2000-01-03', method='nearest') == 1
`
75
``
`-
assert idx.get_loc('2000-01', method='nearest') == slice(0, 2)
`
76
``
-
77
``
`-
time indexing
`
78
``
`-
idx = pd.date_range('2000-01-01', periods=24, freq='H')
`
79
``
`-
tm.assert_numpy_array_equal(idx.get_loc(time(12)),
`
80
``
`-
np.array([12]), check_dtype=False)
`
81
``
`-
tm.assert_numpy_array_equal(idx.get_loc(time(12, 30)),
`
82
``
`-
np.array([]), check_dtype=False)
`
83
``
`-
with pytest.raises(NotImplementedError):
`
84
``
`-
idx.get_loc(time(12, 30), method='pad')
`
85
``
-
86
``
`-
def test_get_indexer(self):
`
87
``
`-
idx = pd.date_range('2000-01-01', periods=3)
`
88
``
`-
exp = np.array([0, 1, 2], dtype=np.intp)
`
89
``
`-
tm.assert_numpy_array_equal(idx.get_indexer(idx), exp)
`
90
``
-
91
``
`-
target = idx[0] + pd.to_timedelta(['-1 hour', '12 hours',
`
92
``
`-
'1 day 1 hour'])
`
93
``
`-
tm.assert_numpy_array_equal(idx.get_indexer(target, 'pad'),
`
94
``
`-
np.array([-1, 0, 1], dtype=np.intp))
`
95
``
`-
tm.assert_numpy_array_equal(idx.get_indexer(target, 'backfill'),
`
96
``
`-
np.array([0, 1, 2], dtype=np.intp))
`
97
``
`-
tm.assert_numpy_array_equal(idx.get_indexer(target, 'nearest'),
`
98
``
`-
np.array([0, 1, 1], dtype=np.intp))
`
99
``
`-
tm.assert_numpy_array_equal(
`
100
``
`-
idx.get_indexer(target, 'nearest',
`
101
``
`-
tolerance=pd.Timedelta('1 hour')),
`
102
``
`-
np.array([0, -1, 1], dtype=np.intp))
`
103
``
`-
tol_raw = [pd.Timedelta('1 hour'),
`
104
``
`-
pd.Timedelta('1 hour'),
`
105
``
`-
pd.Timedelta('1 hour').to_timedelta64(), ]
`
106
``
`-
tm.assert_numpy_array_equal(
`
107
``
`-
idx.get_indexer(target, 'nearest',
`
108
``
`-
tolerance=[np.timedelta64(x) for x in tol_raw]),
`
109
``
`-
np.array([0, -1, 1], dtype=np.intp))
`
110
``
`-
tol_bad = [pd.Timedelta('2 hour').to_timedelta64(),
`
111
``
`-
pd.Timedelta('1 hour').to_timedelta64(),
`
112
``
`-
'foo', ]
`
113
``
`-
with pytest.raises(
`
114
``
`-
ValueError, match='abbreviation w/o a number'):
`
115
``
`-
idx.get_indexer(target, 'nearest', tolerance=tol_bad)
`
116
``
`-
with pytest.raises(ValueError):
`
117
``
`-
idx.get_indexer(idx[[0]], method='nearest', tolerance='foo')
`
118
``
-
119
``
`-
def test_reasonable_keyerror(self):
`
120
``
`-
GH #1062
`
121
``
`-
index = DatetimeIndex(['1/3/2000'])
`
122
``
`-
try:
`
123
``
`-
index.get_loc('1/1/2000')
`
124
``
`-
except KeyError as e:
`
125
``
`-
assert '2000' in str(e)
`
126
``
-
127
21
`def test_roundtrip_pickle_with_tz(self):
`
128
22
``
129
23
`# GH 8367
`