diff --git a/pandas/tests/frame/test_analytics.py b/pandas/tests/frame/test_analytics.py index 82f8a102f9c64..3964e790c7c12 100644 --- a/pandas/tests/frame/test_analytics.py +++ b/pandas/tests/frame/test_analytics.py @@ -32,6 +32,7 @@ def assert_stat_op_calc( has_skipna=True, check_dtype=True, check_dates=False, + check_less_precise=False, skipna_alternative=None, ): """ @@ -53,6 +54,9 @@ def assert_stat_op_calc( "alternative(frame)" should be checked. check_dates : bool, default false Whether opname should be tested on a Datetime Series + check_less_precise : bool, default False + Whether results should only be compared approximately; + passed on to tm.assert_series_equal skipna_alternative : function, default None NaN-safe version of alternative """ @@ -80,11 +84,17 @@ def wrapper(x): result0 = f(axis=0, skipna=False) result1 = f(axis=1, skipna=False) tm.assert_series_equal( - result0, frame.apply(wrapper), check_dtype=check_dtype, + result0, + frame.apply(wrapper), + check_dtype=check_dtype, + check_less_precise=check_less_precise, ) # HACK: win32 tm.assert_series_equal( - result1, frame.apply(wrapper, axis=1), check_dtype=False, + result1, + frame.apply(wrapper, axis=1), + check_dtype=False, + check_less_precise=check_less_precise, ) else: skipna_wrapper = alternative @@ -92,12 +102,17 @@ def wrapper(x): result0 = f(axis=0) result1 = f(axis=1) tm.assert_series_equal( - result0, frame.apply(skipna_wrapper), check_dtype=check_dtype, + result0, + frame.apply(skipna_wrapper), + check_dtype=check_dtype, + check_less_precise=check_less_precise, ) if opname in ["sum", "prod"]: expected = frame.apply(skipna_wrapper, axis=1) - tm.assert_series_equal(result1, expected, check_dtype=False) + tm.assert_series_equal( + result1, expected, check_dtype=False, check_less_precise=check_less_precise + ) # check dtypes if check_dtype: @@ -316,9 +331,15 @@ def kurt(x): check_dates=True, ) + # GH#32571 check_less_precise is needed on apparently-random + # py37-npdev builds and OSX-PY36-min_version builds # mixed types (with upcasting happening) assert_stat_op_calc( - "sum", np.sum, mixed_float_frame.astype("float32"), check_dtype=False, + "sum", + np.sum, + mixed_float_frame.astype("float32"), + check_dtype=False, + check_less_precise=True, ) assert_stat_op_calc( diff --git a/pandas/tests/io/test_sql.py b/pandas/tests/io/test_sql.py index 86502a67e1869..bf0ed4fe25346 100644 --- a/pandas/tests/io/test_sql.py +++ b/pandas/tests/io/test_sql.py @@ -2372,7 +2372,7 @@ def test_write_row_by_row(self): result = sql.read_sql("select * from test", con=self.conn) result.index = frame.index - tm.assert_frame_equal(result, frame) + tm.assert_frame_equal(result, frame, check_less_precise=True) def test_execute(self): frame = tm.makeTimeDataFrame() @@ -2632,7 +2632,9 @@ def test_write_row_by_row(self): result = sql.read_sql("select * from test", con=self.conn) result.index = frame.index - tm.assert_frame_equal(result, frame) + tm.assert_frame_equal(result, frame, check_less_precise=True) + # GH#32571 result comes back rounded to 6 digits in some builds; + # no obvious pattern def test_chunksize_read_type(self): frame = tm.makeTimeDataFrame()