From af2dfbf3853c8fbff6419ad8c70df2c8dcd11fd9 Mon Sep 17 00:00:00 2001 From: mliu08 Date: Sat, 26 Nov 2022 22:32:13 -0800 Subject: [PATCH 1/4] TST: added test for pd.where overflow error GH31687 --- pandas/tests/frame/indexing/test_where.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index 501822f856a63..4463587f63ead 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -18,7 +18,10 @@ isna, ) import pandas._testing as tm -from pandas._testing._hypothesis import OPTIONAL_ONE_OF_ALL +from pandas._testing._hypothesis import ( + DATETIME_JAN_1_1900_OPTIONAL_TZ, + OPTIONAL_ONE_OF_ALL, +) @pytest.fixture(params=["default", "float_string", "mixed_float", "mixed_int"]) @@ -1017,3 +1020,15 @@ def test_where_producing_ea_cond_for_np_dtype(): {"a": Series([pd.NA, pd.NA, 2], dtype="Int64"), "b": [np.nan, 2, 3]} ) tm.assert_frame_equal(result, expected) + + +@pytest.mark.parametrize( + "replacement", [0.001, True, "snake", DATETIME_JAN_1_1900_OPTIONAL_TZ] +) +def test_where_int_overflow(replacement): + # GH 31687 + df = DataFrame([[1.0, 2e19, "nine"], [np.nan, 0.1, None]]) + result = df.where(pd.notnull(df), replacement) + expected = DataFrame([[1.0, 2e19, "nine"], [replacement, 0.1, replacement]]) + + tm.assert_frame_equal(result, expected) From 48f81cdda36df0292e5722119f65000bfe118b1b Mon Sep 17 00:00:00 2001 From: mliu08 Date: Sun, 27 Nov 2022 15:35:58 -0800 Subject: [PATCH 2/4] updated to better match original issue --- pandas/tests/frame/indexing/test_where.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index 4463587f63ead..2a283f719ec0d 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -18,10 +18,7 @@ isna, ) import pandas._testing as tm -from pandas._testing._hypothesis import ( - DATETIME_JAN_1_1900_OPTIONAL_TZ, - OPTIONAL_ONE_OF_ALL, -) +from pandas._testing._hypothesis import OPTIONAL_ONE_OF_ALL @pytest.fixture(params=["default", "float_string", "mixed_float", "mixed_int"]) @@ -1023,12 +1020,12 @@ def test_where_producing_ea_cond_for_np_dtype(): @pytest.mark.parametrize( - "replacement", [0.001, True, "snake", DATETIME_JAN_1_1900_OPTIONAL_TZ] + "replacement", [0.001, True, "snake", None, datetime(2022, 5, 4)] ) def test_where_int_overflow(replacement): # GH 31687 - df = DataFrame([[1.0, 2e19, "nine"], [np.nan, 0.1, None]]) + df = DataFrame([[1.0, 2e25, "nine"], [np.nan, 0.1, None]]) result = df.where(pd.notnull(df), replacement) - expected = DataFrame([[1.0, 2e19, "nine"], [replacement, 0.1, replacement]]) + expected = DataFrame([[1.0, 2e25, "nine"], [replacement, 0.1, replacement]]) tm.assert_frame_equal(result, expected) From abc954c435f2b5fae5850aa25e906ba9cc45b6f5 Mon Sep 17 00:00:00 2001 From: mliu08 Date: Sun, 27 Nov 2022 15:43:36 -0800 Subject: [PATCH 3/4] typo'd datetime.date --- pandas/tests/frame/indexing/test_where.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index 2a283f719ec0d..de117c32e9192 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -1020,7 +1020,7 @@ def test_where_producing_ea_cond_for_np_dtype(): @pytest.mark.parametrize( - "replacement", [0.001, True, "snake", None, datetime(2022, 5, 4)] + "replacement", [0.001, True, "snake", None, datetime.date(2022, 5, 4)] ) def test_where_int_overflow(replacement): # GH 31687 From f6ce291024657c6529888bca4d246d1077a5ae05 Mon Sep 17 00:00:00 2001 From: mliu08 Date: Sun, 27 Nov 2022 18:00:38 -0800 Subject: [PATCH 4/4] removed date object from test --- pandas/tests/frame/indexing/test_where.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index de117c32e9192..2a283f719ec0d 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -1020,7 +1020,7 @@ def test_where_producing_ea_cond_for_np_dtype(): @pytest.mark.parametrize( - "replacement", [0.001, True, "snake", None, datetime.date(2022, 5, 4)] + "replacement", [0.001, True, "snake", None, datetime(2022, 5, 4)] ) def test_where_int_overflow(replacement): # GH 31687