Skip to content

TST: implement test_first #32274

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Feb 27, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions pandas/tests/frame/methods/test_first.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
"""
Note: includes tests for `last`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we just rename the file test_first_and_last.py?

"""
import pytest

from pandas import DataFrame
import pandas._testing as tm


class TestFirst:
def test_first_subset(self):
ts = tm.makeTimeDataFrame(freq="12h")
result = ts.first("10d")
assert len(result) == 20

ts = tm.makeTimeDataFrame(freq="D")
result = ts.first("10d")
assert len(result) == 10

result = ts.first("3M")
expected = ts[:"3/31/2000"]
tm.assert_frame_equal(result, expected)

result = ts.first("21D")
expected = ts[:21]
tm.assert_frame_equal(result, expected)

result = ts[:0].first("3M")
tm.assert_frame_equal(result, ts[:0])

def test_first_raises(self):
# GH#20725
df = DataFrame([[1, 2, 3], [4, 5, 6]])
with pytest.raises(TypeError): # index is not a DatetimeIndex
df.first("1D")

def test_last_subset(self):
ts = tm.makeTimeDataFrame(freq="12h")
result = ts.last("10d")
assert len(result) == 20

ts = tm.makeTimeDataFrame(nper=30, freq="D")
result = ts.last("10d")
assert len(result) == 10

result = ts.last("21D")
expected = ts["2000-01-10":]
tm.assert_frame_equal(result, expected)

result = ts.last("21D")
expected = ts[-21:]
tm.assert_frame_equal(result, expected)

result = ts[:0].last("3M")
tm.assert_frame_equal(result, ts[:0])

def test_last_raises(self):
# GH20725
df = DataFrame([[1, 2, 3], [4, 5, 6]])
with pytest.raises(TypeError): # index is not a DatetimeIndex
df.last("1D")
52 changes: 0 additions & 52 deletions pandas/tests/frame/test_timeseries.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,58 +119,6 @@ def test_first_valid_index_all_nan(self, klass):
assert obj.first_valid_index() is None
assert obj.iloc[:0].first_valid_index() is None

def test_first_subset(self):
ts = tm.makeTimeDataFrame(freq="12h")
result = ts.first("10d")
assert len(result) == 20

ts = tm.makeTimeDataFrame(freq="D")
result = ts.first("10d")
assert len(result) == 10

result = ts.first("3M")
expected = ts[:"3/31/2000"]
tm.assert_frame_equal(result, expected)

result = ts.first("21D")
expected = ts[:21]
tm.assert_frame_equal(result, expected)

result = ts[:0].first("3M")
tm.assert_frame_equal(result, ts[:0])

def test_first_raises(self):
# GH20725
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]])
with pytest.raises(TypeError): # index is not a DatetimeIndex
df.first("1D")

def test_last_subset(self):
ts = tm.makeTimeDataFrame(freq="12h")
result = ts.last("10d")
assert len(result) == 20

ts = tm.makeTimeDataFrame(nper=30, freq="D")
result = ts.last("10d")
assert len(result) == 10

result = ts.last("21D")
expected = ts["2000-01-10":]
tm.assert_frame_equal(result, expected)

result = ts.last("21D")
expected = ts[-21:]
tm.assert_frame_equal(result, expected)

result = ts[:0].last("3M")
tm.assert_frame_equal(result, ts[:0])

def test_last_raises(self):
# GH20725
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]])
with pytest.raises(TypeError): # index is not a DatetimeIndex
df.last("1D")

def test_operation_on_NaT(self):
# Both NaT and Timestamp are in DataFrame.
df = pd.DataFrame({"foo": [pd.NaT, pd.NaT, pd.Timestamp("2012-05-01")]})
Expand Down
69 changes: 69 additions & 0 deletions pandas/tests/series/methods/test_first.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
"""
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we just rename the file test_first_and_last.py?

Note: includes tests for `last`
"""

import numpy as np
import pytest

from pandas import Series, date_range
import pandas._testing as tm


class TestFirst:
def test_first_subset(self):
rng = date_range("1/1/2000", "1/1/2010", freq="12h")
ts = Series(np.random.randn(len(rng)), index=rng)
result = ts.first("10d")
assert len(result) == 20

rng = date_range("1/1/2000", "1/1/2010", freq="D")
ts = Series(np.random.randn(len(rng)), index=rng)
result = ts.first("10d")
assert len(result) == 10

result = ts.first("3M")
expected = ts[:"3/31/2000"]
tm.assert_series_equal(result, expected)

result = ts.first("21D")
expected = ts[:21]
tm.assert_series_equal(result, expected)

result = ts[:0].first("3M")
tm.assert_series_equal(result, ts[:0])

def test_first_raises(self):
# GH#20725
ser = Series("a b c".split())
msg = "'first' only supports a DatetimeIndex index"
with pytest.raises(TypeError, match=msg):
ser.first("1D")

def test_last_subset(self):
rng = date_range("1/1/2000", "1/1/2010", freq="12h")
ts = Series(np.random.randn(len(rng)), index=rng)
result = ts.last("10d")
assert len(result) == 20

rng = date_range("1/1/2000", "1/1/2010", freq="D")
ts = Series(np.random.randn(len(rng)), index=rng)
result = ts.last("10d")
assert len(result) == 10

result = ts.last("21D")
expected = ts["12/12/2009":]
tm.assert_series_equal(result, expected)

result = ts.last("21D")
expected = ts[-21:]
tm.assert_series_equal(result, expected)

result = ts[:0].last("3M")
tm.assert_series_equal(result, ts[:0])

def test_last_raises(self):
# GH#20725
ser = Series("a b c".split())
msg = "'last' only supports a DatetimeIndex index"
with pytest.raises(TypeError, match=msg):
ser.last("1D")
54 changes: 0 additions & 54 deletions pandas/tests/series/test_timeseries.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,60 +249,6 @@ def test_promote_datetime_date(self):
expected = rng.get_indexer(ts_slice.index)
tm.assert_numpy_array_equal(result, expected)

def test_first_subset(self):
ts = _simple_ts("1/1/2000", "1/1/2010", freq="12h")
result = ts.first("10d")
assert len(result) == 20

ts = _simple_ts("1/1/2000", "1/1/2010")
result = ts.first("10d")
assert len(result) == 10

result = ts.first("3M")
expected = ts[:"3/31/2000"]
tm.assert_series_equal(result, expected)

result = ts.first("21D")
expected = ts[:21]
tm.assert_series_equal(result, expected)

result = ts[:0].first("3M")
tm.assert_series_equal(result, ts[:0])

def test_first_raises(self):
# GH20725
ser = pd.Series("a b c".split())
msg = "'first' only supports a DatetimeIndex index"
with pytest.raises(TypeError, match=msg):
ser.first("1D")

def test_last_subset(self):
ts = _simple_ts("1/1/2000", "1/1/2010", freq="12h")
result = ts.last("10d")
assert len(result) == 20

ts = _simple_ts("1/1/2000", "1/1/2010")
result = ts.last("10d")
assert len(result) == 10

result = ts.last("21D")
expected = ts["12/12/2009":]
tm.assert_series_equal(result, expected)

result = ts.last("21D")
expected = ts[-21:]
tm.assert_series_equal(result, expected)

result = ts[:0].last("3M")
tm.assert_series_equal(result, ts[:0])

def test_last_raises(self):
# GH20725
ser = pd.Series("a b c".split())
msg = "'last' only supports a DatetimeIndex index"
with pytest.raises(TypeError, match=msg):
ser.last("1D")

def test_format_pre_1900_dates(self):
rng = date_range("1/1/1850", "1/1/1950", freq="A-DEC")
rng.format()
Expand Down