From 121b8159ade608b3a5d7bae4d0291df1cabe89d2 Mon Sep 17 00:00:00 2001 From: Khor Chean Wei Date: Mon, 14 Feb 2022 00:29:16 +0800 Subject: [PATCH 1/6] Add test --- pandas/tests/dtypes/test_dtypes.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pandas/tests/dtypes/test_dtypes.py b/pandas/tests/dtypes/test_dtypes.py index f077317e7ebbe..66e6362f8cff8 100644 --- a/pandas/tests/dtypes/test_dtypes.py +++ b/pandas/tests/dtypes/test_dtypes.py @@ -1107,3 +1107,14 @@ def test_compare_complex_dtypes(): with pytest.raises(TypeError, match=msg): df.lt(df.astype(object)) + +@pytest.mark.parametrize( + "array", + [(["foo", "bar", pd.NA]), (["foo", "bar", np.NaN]), (["foo", "bar", None])], +) +def test_skip_convert_nan_values_to_strings(self, array): + # GH 44156 + result = pd.Series(array).astype("str") + expected = pd.Series(array) + + tm.assert_series_equal(result, expected) From e2a1089fe7f8096a6107e3bdb5c17d609dd71868 Mon Sep 17 00:00:00 2001 From: cheanwei Date: Mon, 14 Feb 2022 00:30:28 +0800 Subject: [PATCH 2/6] astype converts NA values to strings --- pandas/core/dtypes/astype.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/dtypes/astype.py b/pandas/core/dtypes/astype.py index 1e78bf0cd33ae..7636cd9080107 100644 --- a/pandas/core/dtypes/astype.py +++ b/pandas/core/dtypes/astype.py @@ -224,7 +224,7 @@ def astype_array(values: ArrayLike, dtype: DtypeObj, copy: bool = False) -> Arra values = values.astype(dtype, copy=copy) else: - values = astype_nansafe(values, dtype, copy=copy) + values = astype_nansafe(values, dtype, copy=copy, skipna=True) # in pandas we don't store numpy str dtypes, so convert to object if isinstance(dtype, np.dtype) and issubclass(values.dtype.type, str): From 38fe6ce6f31d614cb343086f53b65c89343467b9 Mon Sep 17 00:00:00 2001 From: Khor Chean Wei Date: Mon, 14 Feb 2022 00:34:56 +0800 Subject: [PATCH 3/6] Update test_dtypes.py --- pandas/tests/dtypes/test_dtypes.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pandas/tests/dtypes/test_dtypes.py b/pandas/tests/dtypes/test_dtypes.py index 66e6362f8cff8..dc2ea5b432624 100644 --- a/pandas/tests/dtypes/test_dtypes.py +++ b/pandas/tests/dtypes/test_dtypes.py @@ -1107,7 +1107,8 @@ def test_compare_complex_dtypes(): with pytest.raises(TypeError, match=msg): df.lt(df.astype(object)) - + + @pytest.mark.parametrize( "array", [(["foo", "bar", pd.NA]), (["foo", "bar", np.NaN]), (["foo", "bar", None])], @@ -1118,3 +1119,4 @@ def test_skip_convert_nan_values_to_strings(self, array): expected = pd.Series(array) tm.assert_series_equal(result, expected) + From 136c438ff8d498b5f5e1e9fc8483daaca7be525e Mon Sep 17 00:00:00 2001 From: Khor Chean Wei Date: Mon, 14 Feb 2022 00:36:34 +0800 Subject: [PATCH 4/6] pep8 issues --- pandas/tests/dtypes/test_dtypes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pandas/tests/dtypes/test_dtypes.py b/pandas/tests/dtypes/test_dtypes.py index dc2ea5b432624..1054f97b966a9 100644 --- a/pandas/tests/dtypes/test_dtypes.py +++ b/pandas/tests/dtypes/test_dtypes.py @@ -1119,4 +1119,3 @@ def test_skip_convert_nan_values_to_strings(self, array): expected = pd.Series(array) tm.assert_series_equal(result, expected) - From 38dd867b0c34f2fcbc2944712d92369ba435e248 Mon Sep 17 00:00:00 2001 From: Khor Chean Wei Date: Mon, 14 Feb 2022 16:30:00 +0800 Subject: [PATCH 5/6] Update test_dtypes.py --- pandas/tests/dtypes/test_dtypes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/tests/dtypes/test_dtypes.py b/pandas/tests/dtypes/test_dtypes.py index 1054f97b966a9..2db0312e7a9b6 100644 --- a/pandas/tests/dtypes/test_dtypes.py +++ b/pandas/tests/dtypes/test_dtypes.py @@ -1115,7 +1115,7 @@ def test_compare_complex_dtypes(): ) def test_skip_convert_nan_values_to_strings(self, array): # GH 44156 - result = pd.Series(array).astype("str") - expected = pd.Series(array) + result = Series(array).astype("str") + expected = Series(array) tm.assert_series_equal(result, expected) From 9b9dbb7ee06eab55b36a12926e55742125b8433a Mon Sep 17 00:00:00 2001 From: Khor Chean Wei Date: Mon, 14 Feb 2022 19:20:22 +0800 Subject: [PATCH 6/6] Remove self --- pandas/tests/dtypes/test_dtypes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/dtypes/test_dtypes.py b/pandas/tests/dtypes/test_dtypes.py index 2db0312e7a9b6..ecde19ab48911 100644 --- a/pandas/tests/dtypes/test_dtypes.py +++ b/pandas/tests/dtypes/test_dtypes.py @@ -1113,7 +1113,7 @@ def test_compare_complex_dtypes(): "array", [(["foo", "bar", pd.NA]), (["foo", "bar", np.NaN]), (["foo", "bar", None])], ) -def test_skip_convert_nan_values_to_strings(self, array): +def test_skip_convert_nan_values_to_strings(array): # GH 44156 result = Series(array).astype("str") expected = Series(array)