Skip to content

Commit 7a35c6e

Browse files
jbrockmendelroberthdevries
authored andcommitted
TST: implement test_first (pandas-dev#32274)
1 parent 4618e4c commit 7a35c6e

File tree

4 files changed

+130
-106
lines changed

4 files changed

+130
-106
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
"""
2+
Note: includes tests for `last`
3+
"""
4+
import pytest
5+
6+
from pandas import DataFrame
7+
import pandas._testing as tm
8+
9+
10+
class TestFirst:
11+
def test_first_subset(self):
12+
ts = tm.makeTimeDataFrame(freq="12h")
13+
result = ts.first("10d")
14+
assert len(result) == 20
15+
16+
ts = tm.makeTimeDataFrame(freq="D")
17+
result = ts.first("10d")
18+
assert len(result) == 10
19+
20+
result = ts.first("3M")
21+
expected = ts[:"3/31/2000"]
22+
tm.assert_frame_equal(result, expected)
23+
24+
result = ts.first("21D")
25+
expected = ts[:21]
26+
tm.assert_frame_equal(result, expected)
27+
28+
result = ts[:0].first("3M")
29+
tm.assert_frame_equal(result, ts[:0])
30+
31+
def test_first_raises(self):
32+
# GH#20725
33+
df = DataFrame([[1, 2, 3], [4, 5, 6]])
34+
with pytest.raises(TypeError): # index is not a DatetimeIndex
35+
df.first("1D")
36+
37+
def test_last_subset(self):
38+
ts = tm.makeTimeDataFrame(freq="12h")
39+
result = ts.last("10d")
40+
assert len(result) == 20
41+
42+
ts = tm.makeTimeDataFrame(nper=30, freq="D")
43+
result = ts.last("10d")
44+
assert len(result) == 10
45+
46+
result = ts.last("21D")
47+
expected = ts["2000-01-10":]
48+
tm.assert_frame_equal(result, expected)
49+
50+
result = ts.last("21D")
51+
expected = ts[-21:]
52+
tm.assert_frame_equal(result, expected)
53+
54+
result = ts[:0].last("3M")
55+
tm.assert_frame_equal(result, ts[:0])
56+
57+
def test_last_raises(self):
58+
# GH20725
59+
df = DataFrame([[1, 2, 3], [4, 5, 6]])
60+
with pytest.raises(TypeError): # index is not a DatetimeIndex
61+
df.last("1D")

pandas/tests/frame/test_timeseries.py

-52
Original file line numberDiff line numberDiff line change
@@ -119,58 +119,6 @@ def test_first_valid_index_all_nan(self, klass):
119119
assert obj.first_valid_index() is None
120120
assert obj.iloc[:0].first_valid_index() is None
121121

122-
def test_first_subset(self):
123-
ts = tm.makeTimeDataFrame(freq="12h")
124-
result = ts.first("10d")
125-
assert len(result) == 20
126-
127-
ts = tm.makeTimeDataFrame(freq="D")
128-
result = ts.first("10d")
129-
assert len(result) == 10
130-
131-
result = ts.first("3M")
132-
expected = ts[:"3/31/2000"]
133-
tm.assert_frame_equal(result, expected)
134-
135-
result = ts.first("21D")
136-
expected = ts[:21]
137-
tm.assert_frame_equal(result, expected)
138-
139-
result = ts[:0].first("3M")
140-
tm.assert_frame_equal(result, ts[:0])
141-
142-
def test_first_raises(self):
143-
# GH20725
144-
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]])
145-
with pytest.raises(TypeError): # index is not a DatetimeIndex
146-
df.first("1D")
147-
148-
def test_last_subset(self):
149-
ts = tm.makeTimeDataFrame(freq="12h")
150-
result = ts.last("10d")
151-
assert len(result) == 20
152-
153-
ts = tm.makeTimeDataFrame(nper=30, freq="D")
154-
result = ts.last("10d")
155-
assert len(result) == 10
156-
157-
result = ts.last("21D")
158-
expected = ts["2000-01-10":]
159-
tm.assert_frame_equal(result, expected)
160-
161-
result = ts.last("21D")
162-
expected = ts[-21:]
163-
tm.assert_frame_equal(result, expected)
164-
165-
result = ts[:0].last("3M")
166-
tm.assert_frame_equal(result, ts[:0])
167-
168-
def test_last_raises(self):
169-
# GH20725
170-
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]])
171-
with pytest.raises(TypeError): # index is not a DatetimeIndex
172-
df.last("1D")
173-
174122
def test_operation_on_NaT(self):
175123
# Both NaT and Timestamp are in DataFrame.
176124
df = pd.DataFrame({"foo": [pd.NaT, pd.NaT, pd.Timestamp("2012-05-01")]})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
"""
2+
Note: includes tests for `last`
3+
"""
4+
5+
import numpy as np
6+
import pytest
7+
8+
from pandas import Series, date_range
9+
import pandas._testing as tm
10+
11+
12+
class TestFirst:
13+
def test_first_subset(self):
14+
rng = date_range("1/1/2000", "1/1/2010", freq="12h")
15+
ts = Series(np.random.randn(len(rng)), index=rng)
16+
result = ts.first("10d")
17+
assert len(result) == 20
18+
19+
rng = date_range("1/1/2000", "1/1/2010", freq="D")
20+
ts = Series(np.random.randn(len(rng)), index=rng)
21+
result = ts.first("10d")
22+
assert len(result) == 10
23+
24+
result = ts.first("3M")
25+
expected = ts[:"3/31/2000"]
26+
tm.assert_series_equal(result, expected)
27+
28+
result = ts.first("21D")
29+
expected = ts[:21]
30+
tm.assert_series_equal(result, expected)
31+
32+
result = ts[:0].first("3M")
33+
tm.assert_series_equal(result, ts[:0])
34+
35+
def test_first_raises(self):
36+
# GH#20725
37+
ser = Series("a b c".split())
38+
msg = "'first' only supports a DatetimeIndex index"
39+
with pytest.raises(TypeError, match=msg):
40+
ser.first("1D")
41+
42+
def test_last_subset(self):
43+
rng = date_range("1/1/2000", "1/1/2010", freq="12h")
44+
ts = Series(np.random.randn(len(rng)), index=rng)
45+
result = ts.last("10d")
46+
assert len(result) == 20
47+
48+
rng = date_range("1/1/2000", "1/1/2010", freq="D")
49+
ts = Series(np.random.randn(len(rng)), index=rng)
50+
result = ts.last("10d")
51+
assert len(result) == 10
52+
53+
result = ts.last("21D")
54+
expected = ts["12/12/2009":]
55+
tm.assert_series_equal(result, expected)
56+
57+
result = ts.last("21D")
58+
expected = ts[-21:]
59+
tm.assert_series_equal(result, expected)
60+
61+
result = ts[:0].last("3M")
62+
tm.assert_series_equal(result, ts[:0])
63+
64+
def test_last_raises(self):
65+
# GH#20725
66+
ser = Series("a b c".split())
67+
msg = "'last' only supports a DatetimeIndex index"
68+
with pytest.raises(TypeError, match=msg):
69+
ser.last("1D")

pandas/tests/series/test_timeseries.py

-54
Original file line numberDiff line numberDiff line change
@@ -167,60 +167,6 @@ def test_promote_datetime_date(self):
167167
expected = rng.get_indexer(ts_slice.index)
168168
tm.assert_numpy_array_equal(result, expected)
169169

170-
def test_first_subset(self):
171-
ts = _simple_ts("1/1/2000", "1/1/2010", freq="12h")
172-
result = ts.first("10d")
173-
assert len(result) == 20
174-
175-
ts = _simple_ts("1/1/2000", "1/1/2010")
176-
result = ts.first("10d")
177-
assert len(result) == 10
178-
179-
result = ts.first("3M")
180-
expected = ts[:"3/31/2000"]
181-
tm.assert_series_equal(result, expected)
182-
183-
result = ts.first("21D")
184-
expected = ts[:21]
185-
tm.assert_series_equal(result, expected)
186-
187-
result = ts[:0].first("3M")
188-
tm.assert_series_equal(result, ts[:0])
189-
190-
def test_first_raises(self):
191-
# GH20725
192-
ser = pd.Series("a b c".split())
193-
msg = "'first' only supports a DatetimeIndex index"
194-
with pytest.raises(TypeError, match=msg):
195-
ser.first("1D")
196-
197-
def test_last_subset(self):
198-
ts = _simple_ts("1/1/2000", "1/1/2010", freq="12h")
199-
result = ts.last("10d")
200-
assert len(result) == 20
201-
202-
ts = _simple_ts("1/1/2000", "1/1/2010")
203-
result = ts.last("10d")
204-
assert len(result) == 10
205-
206-
result = ts.last("21D")
207-
expected = ts["12/12/2009":]
208-
tm.assert_series_equal(result, expected)
209-
210-
result = ts.last("21D")
211-
expected = ts[-21:]
212-
tm.assert_series_equal(result, expected)
213-
214-
result = ts[:0].last("3M")
215-
tm.assert_series_equal(result, ts[:0])
216-
217-
def test_last_raises(self):
218-
# GH20725
219-
ser = pd.Series("a b c".split())
220-
msg = "'last' only supports a DatetimeIndex index"
221-
with pytest.raises(TypeError, match=msg):
222-
ser.last("1D")
223-
224170
def test_format_pre_1900_dates(self):
225171
rng = date_range("1/1/1850", "1/1/1950", freq="A-DEC")
226172
rng.format()

0 commit comments

Comments
 (0)