From b84dc2f4447cbea4180795d420fb2ce7f2af3df1 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sun, 10 Mar 2019 15:10:35 +0100 Subject: [PATCH 1/2] Fixturize tests/frame/test_asof.py --- pandas/tests/frame/conftest.py | 12 +++++++++ pandas/tests/frame/test_asof.py | 43 +++++++++++++-------------------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/pandas/tests/frame/conftest.py b/pandas/tests/frame/conftest.py index fbe03325a3ad9..03893bd8ab42e 100644 --- a/pandas/tests/frame/conftest.py +++ b/pandas/tests/frame/conftest.py @@ -67,6 +67,18 @@ def datetime_frame(): return DataFrame(tm.getTimeSeriesData()) +@pytest.fixture +def date_range_frame(): + """ + Fixture for DataFrame of ints with date_range index + + Columns are ['A', 'B']. + """ + N = 50 + rng = date_range('1/1/1990', periods=N, freq='53s') + return DataFrame({'A': np.arange(N), 'B': np.arange(N)}, index=rng) + + @pytest.fixture def float_string_frame(): """ diff --git a/pandas/tests/frame/test_asof.py b/pandas/tests/frame/test_asof.py index 0947e6f252dab..36fe93663b458 100644 --- a/pandas/tests/frame/test_asof.py +++ b/pandas/tests/frame/test_asof.py @@ -6,21 +6,14 @@ from pandas import DataFrame, Series, Timestamp, date_range, to_datetime import pandas.util.testing as tm -from .common import TestData +class TestFrameAsof(): -class TestFrameAsof(TestData): - def setup_method(self, method): - self.N = N = 50 - self.rng = date_range('1/1/1990', periods=N, freq='53s') - self.df = DataFrame({'A': np.arange(N), 'B': np.arange(N)}, - index=self.rng) - - def test_basic(self): - df = self.df.copy() + def test_basic(self, date_range_frame): + df = date_range_frame + N = 50 df.loc[15:30, 'A'] = np.nan - dates = date_range('1/1/1990', periods=self.N * 3, - freq='25s') + dates = date_range('1/1/1990', periods=N * 3, freq='25s') result = df.asof(dates) assert result.notna().all(1).all() @@ -35,11 +28,9 @@ def test_basic(self): rs = result[mask] assert (rs == 14).all(1).all() - def test_subset(self): + def test_subset(self, date_range_frame): N = 10 - rng = date_range('1/1/1990', periods=N, freq='53s') - df = DataFrame({'A': np.arange(N), 'B': np.arange(N)}, - index=rng) + df = date_range_frame.iloc[:N].copy() df.loc[4:8, 'A'] = np.nan dates = date_range('1/1/1990', periods=N * 3, freq='25s') @@ -54,20 +45,18 @@ def test_subset(self): expected = df.asof(dates) tm.assert_frame_equal(result, expected) - # B gives self.df.asof + # B gives df.asof result = df.asof(dates, subset='B') expected = df.resample('25s', closed='right').ffill().reindex(dates) expected.iloc[20:] = 9 tm.assert_frame_equal(result, expected) - def test_missing(self): + def test_missing(self, date_range_frame): # GH 15118 # no match found - `where` value before earliest date in index N = 10 - rng = date_range('1/1/1990', periods=N, freq='53s') - df = DataFrame({'A': np.arange(N), 'B': np.arange(N)}, - index=rng) + df = date_range_frame.iloc[:N].copy() result = df.asof('1989-12-31') expected = Series(index=['A', 'B'], name=Timestamp('1989-12-31')) @@ -78,7 +67,7 @@ def test_missing(self): columns=['A', 'B'], dtype='float64') tm.assert_frame_equal(result, expected) - def test_all_nans(self): + def test_all_nans(self, date_range_frame): # GH 15713 # DataFrame is all nans result = DataFrame([np.nan]).asof([0]) @@ -86,14 +75,16 @@ def test_all_nans(self): tm.assert_frame_equal(result, expected) # testing non-default indexes, multiple inputs - dates = date_range('1/1/1990', periods=self.N * 3, freq='25s') - result = DataFrame(np.nan, index=self.rng, columns=['A']).asof(dates) + N = 150 + rng = date_range_frame.index + dates = date_range('1/1/1990', periods=N, freq='25s') + result = DataFrame(np.nan, index=rng, columns=['A']).asof(dates) expected = DataFrame(np.nan, index=dates, columns=['A']) tm.assert_frame_equal(result, expected) # testing multiple columns - dates = date_range('1/1/1990', periods=self.N * 3, freq='25s') - result = DataFrame(np.nan, index=self.rng, + dates = date_range('1/1/1990', periods=N, freq='25s') + result = DataFrame(np.nan, index=rng, columns=['A', 'B', 'C']).asof(dates) expected = DataFrame(np.nan, index=dates, columns=['A', 'B', 'C']) tm.assert_frame_equal(result, expected) From 072a2f60b62e9ef41042f6b1393f52cd794d9977 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sun, 10 Mar 2019 18:41:32 +0100 Subject: [PATCH 2/2] Review (jreback) --- pandas/tests/frame/conftest.py | 12 ------------ pandas/tests/frame/test_asof.py | 12 ++++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pandas/tests/frame/conftest.py b/pandas/tests/frame/conftest.py index 03893bd8ab42e..fbe03325a3ad9 100644 --- a/pandas/tests/frame/conftest.py +++ b/pandas/tests/frame/conftest.py @@ -67,18 +67,6 @@ def datetime_frame(): return DataFrame(tm.getTimeSeriesData()) -@pytest.fixture -def date_range_frame(): - """ - Fixture for DataFrame of ints with date_range index - - Columns are ['A', 'B']. - """ - N = 50 - rng = date_range('1/1/1990', periods=N, freq='53s') - return DataFrame({'A': np.arange(N), 'B': np.arange(N)}, index=rng) - - @pytest.fixture def float_string_frame(): """ diff --git a/pandas/tests/frame/test_asof.py b/pandas/tests/frame/test_asof.py index 36fe93663b458..4ba3431d102df 100644 --- a/pandas/tests/frame/test_asof.py +++ b/pandas/tests/frame/test_asof.py @@ -7,6 +7,18 @@ import pandas.util.testing as tm +@pytest.fixture +def date_range_frame(): + """ + Fixture for DataFrame of ints with date_range index + + Columns are ['A', 'B']. + """ + N = 50 + rng = date_range('1/1/1990', periods=N, freq='53s') + return DataFrame({'A': np.arange(N), 'B': np.arange(N)}, index=rng) + + class TestFrameAsof(): def test_basic(self, date_range_frame):