Skip to content

Commit ec39d9e

Browse files
committed
fixed GH#59303
1 parent a7a1410 commit ec39d9e

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

pandas/io/parsers/readers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1648,7 +1648,7 @@ def _clean_na_values(na_values, keep_default_na: bool = True, floatify: bool = T
16481648
if keep_default_na:
16491649
v = set(v) | STR_NA_VALUES
16501650

1651-
na_values[k] = v
1651+
na_values[k] = _stringify_na_values(v, floatify)
16521652
na_fvalues = {k: _floatify_na_values(v) for k, v in na_values.items()}
16531653
else:
16541654
if not is_list_like(na_values):

pandas/tests/io/parser/test_na_values.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -812,3 +812,22 @@ def test_bool_and_nan_to_float(all_parsers):
812812
result = parser.read_csv(StringIO(data), dtype="float")
813813
expected = DataFrame.from_dict({"0": [np.nan, 1.0, 0.0]})
814814
tm.assert_frame_equal(result, expected)
815+
816+
@xfail_pyarrow
817+
def test_na_values_dict_without_dtype(all_parsers):
818+
# GH#59303
819+
parser = all_parsers
820+
data = """A
821+
-99
822+
-99
823+
-99.0
824+
-99.0"""
825+
# this would FAIL BEFORE this fix
826+
result_1 = parser.read_csv(StringIO(data), na_values={"A": [-99.0, -99]})
827+
expected_1 = DataFrame.from_dict({"A": [np.nan, np.nan, np.nan, np.nan]})
828+
tm.assert_frame_equal(result_1, expected_1)
829+
830+
# this would PASS even BEFORE this fix
831+
result_2 = parser.read_csv(StringIO(data), na_values={"A": [-99, -99.0]})
832+
expected_2 = DataFrame.from_dict({"A": [np.nan, np.nan, np.nan, np.nan]})
833+
tm.assert_frame_equal(result_2, expected_2)

0 commit comments

Comments
 (0)