From 14e2fd063ea201d3cb49268047f654a5105d3057 Mon Sep 17 00:00:00 2001 From: pv8493013j Date: Sat, 2 Nov 2019 12:52:21 +0000 Subject: [PATCH 1/6] gh 14422 add test --- pandas/tests/tools/test_numeric.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pandas/tests/tools/test_numeric.py b/pandas/tests/tools/test_numeric.py index 55f83e492e2cc..6887679c73075 100644 --- a/pandas/tests/tools/test_numeric.py +++ b/pandas/tests/tools/test_numeric.py @@ -609,3 +609,16 @@ def test_non_coerce_uint64_conflict(errors, exp): else: result = to_numeric(ser, errors=errors) tm.assert_series_equal(result, ser) + +# @pytest.mark.parametrize() +def test_downcast_uint64_exception(): + # see gh-14422: + # BUG: to_numeric doesn't work uint64 numbers + + series = pd.Series([0, 9223372036854775808]) + + expected = pd.Series([0, 9223372036854775808], dtype=np.uint64) + + result = pd.to_numeric(series, downcast='unsigned') + + tm.assert_series_equal(result, expected) \ No newline at end of file From 84386976a113b9f7e84863f5a8329f129d1b2a92 Mon Sep 17 00:00:00 2001 From: pv8493013j Date: Sat, 2 Nov 2019 12:55:51 +0000 Subject: [PATCH 2/6] gh 14422 add test --- pandas/tests/tools/test_numeric.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pandas/tests/tools/test_numeric.py b/pandas/tests/tools/test_numeric.py index 6887679c73075..3fc1523d1ce05 100644 --- a/pandas/tests/tools/test_numeric.py +++ b/pandas/tests/tools/test_numeric.py @@ -610,7 +610,6 @@ def test_non_coerce_uint64_conflict(errors, exp): result = to_numeric(ser, errors=errors) tm.assert_series_equal(result, ser) -# @pytest.mark.parametrize() def test_downcast_uint64_exception(): # see gh-14422: # BUG: to_numeric doesn't work uint64 numbers From dfe88eda308f9fbbf3afb9eaff4796ceac034225 Mon Sep 17 00:00:00 2001 From: pv8493013j Date: Sat, 2 Nov 2019 14:26:18 +0000 Subject: [PATCH 3/6] amend to match PEP8 --- pandas/tests/tools/test_numeric.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pandas/tests/tools/test_numeric.py b/pandas/tests/tools/test_numeric.py index 3fc1523d1ce05..697b184c7ac98 100644 --- a/pandas/tests/tools/test_numeric.py +++ b/pandas/tests/tools/test_numeric.py @@ -610,6 +610,7 @@ def test_non_coerce_uint64_conflict(errors, exp): result = to_numeric(ser, errors=errors) tm.assert_series_equal(result, ser) + def test_downcast_uint64_exception(): # see gh-14422: # BUG: to_numeric doesn't work uint64 numbers @@ -618,6 +619,6 @@ def test_downcast_uint64_exception(): expected = pd.Series([0, 9223372036854775808], dtype=np.uint64) - result = pd.to_numeric(series, downcast='unsigned') + result = pd.to_numeric(series, downcast="unsigned") - tm.assert_series_equal(result, expected) \ No newline at end of file + tm.assert_series_equal(result, expected) From 4501788a9a31481cd41071081d6feaaf64ea3669 Mon Sep 17 00:00:00 2001 From: pv8493013j Date: Sat, 2 Nov 2019 14:39:18 +0000 Subject: [PATCH 4/6] added test_replace_no_cast() --- pandas/tests/series/test_replace.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pandas/tests/series/test_replace.py b/pandas/tests/series/test_replace.py index e9d5a4b105a35..47c594fb98c4b 100644 --- a/pandas/tests/series/test_replace.py +++ b/pandas/tests/series/test_replace.py @@ -305,3 +305,17 @@ def test_replace_with_no_overflowerror(self): result = s.replace(["100000000000000000000"], [1]) expected = pd.Series([0, 1, "100000000000000000001"]) tm.assert_series_equal(result, expected) + + def test_replace_no_cast(self): + # GH 9113 + # BUG: replace int64 dtype with bool coerces to int64 + + s1 = pd.Series([1, 2, 3]) + result1 = s1.replace(2, True) + expected1 = pd.Series([1, True, 3]) + tm.assert_series_equal(result1, expected1) + + s2 = pd.Series(["x", 2, 3]) + result2 = s1.replace(2, True) + expected2 = pd.Series(["x", True, 3]) + tm.assert_series_equal(result2, expected2) From 4836e0ba51f17e698bc41da78fea1b9c6dd03df4 Mon Sep 17 00:00:00 2001 From: pv8493013j Date: Sat, 2 Nov 2019 18:08:50 +0000 Subject: [PATCH 5/6] cleaned up test --- pandas/tests/tools/test_numeric.py | 31 +++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/pandas/tests/tools/test_numeric.py b/pandas/tests/tools/test_numeric.py index 697b184c7ac98..082277796e602 100644 --- a/pandas/tests/tools/test_numeric.py +++ b/pandas/tests/tools/test_numeric.py @@ -567,6 +567,24 @@ def test_downcast_limits(dtype, downcast, min_max): assert series.dtype == dtype +@pytest.mark.parametrize( + "ser,expected", + [ + ( + pd.Series([0, 9223372036854775808]), + pd.Series([0, 9223372036854775808], dtype=np.uint64), + ) + ], +) +def test_downcast_uint64(ser, expected): + # see gh-14422: + # BUG: to_numeric doesn't work uint64 numbers + + result = pd.to_numeric(ser, downcast="unsigned") + + tm.assert_series_equal(result, expected) + + @pytest.mark.parametrize( "data,exp_data", [ @@ -609,16 +627,3 @@ def test_non_coerce_uint64_conflict(errors, exp): else: result = to_numeric(ser, errors=errors) tm.assert_series_equal(result, ser) - - -def test_downcast_uint64_exception(): - # see gh-14422: - # BUG: to_numeric doesn't work uint64 numbers - - series = pd.Series([0, 9223372036854775808]) - - expected = pd.Series([0, 9223372036854775808], dtype=np.uint64) - - result = pd.to_numeric(series, downcast="unsigned") - - tm.assert_series_equal(result, expected) From 5d41c7f9bd79c124a7f0cd278db28f19d71390f9 Mon Sep 17 00:00:00 2001 From: pv8493013j Date: Sat, 2 Nov 2019 18:41:21 +0000 Subject: [PATCH 6/6] removed wrong file --- pandas/tests/series/test_replace.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/pandas/tests/series/test_replace.py b/pandas/tests/series/test_replace.py index 47c594fb98c4b..e9d5a4b105a35 100644 --- a/pandas/tests/series/test_replace.py +++ b/pandas/tests/series/test_replace.py @@ -305,17 +305,3 @@ def test_replace_with_no_overflowerror(self): result = s.replace(["100000000000000000000"], [1]) expected = pd.Series([0, 1, "100000000000000000001"]) tm.assert_series_equal(result, expected) - - def test_replace_no_cast(self): - # GH 9113 - # BUG: replace int64 dtype with bool coerces to int64 - - s1 = pd.Series([1, 2, 3]) - result1 = s1.replace(2, True) - expected1 = pd.Series([1, True, 3]) - tm.assert_series_equal(result1, expected1) - - s2 = pd.Series(["x", 2, 3]) - result2 = s1.replace(2, True) - expected2 = pd.Series(["x", True, 3]) - tm.assert_series_equal(result2, expected2)