Skip to content

Commit 6ea8e1b

Browse files
committed
BUG: Fixed passing keep_default_na=False when na_values=None (GH4318)
1 parent 8ac0e11 commit 6ea8e1b

File tree

4 files changed

+29
-2
lines changed

4 files changed

+29
-2
lines changed

doc/source/release.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ pandas 0.13
8282
local variable was undefined (:issue:`4381`)
8383
- In ``to_json``, raise if a passed ``orient`` would cause loss of data because
8484
of a duplicate index (:issue:`4359`)
85+
- Fixed passing ``keep_default_na=False`` when ``na_values=None`` (:issue:`4318`)
8586

8687
pandas 0.12
8788
===========

doc/source/v0.13.0.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ Bug Fixes
6666

6767
- Suppressed DeprecationWarning associated with internal calls issued by repr() (:issue:`4391`)
6868

69+
- Fixed passing ``keep_default_na=False`` when ``na_values=None`` (:issue:`4318`)
70+
6971
See the :ref:`full release notes
7072
<release>` or issue tracker
7173
on GitHub for a complete list.

pandas/io/parsers.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1774,8 +1774,11 @@ def _try_convert_dates(parser, colspec, data_dict, columns):
17741774

17751775
def _clean_na_values(na_values, keep_default_na=True):
17761776

1777-
if na_values is None and keep_default_na:
1778-
na_values = _NA_VALUES
1777+
if na_values is None:
1778+
if keep_default_na:
1779+
na_values = _NA_VALUES
1780+
else:
1781+
na_values = []
17791782
na_fvalues = set()
17801783
elif isinstance(na_values, dict):
17811784
if keep_default_na:

pandas/io/tests/test_parsers.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,27 @@ def test_empty_string(self):
108108
np.nan, 'seven']})
109109
tm.assert_frame_equal(xp.reindex(columns=df.columns), df)
110110

111+
112+
# GH4318, passing na_values=None and keep_default_na=False yields 'None' as a na_value
113+
data = """\
114+
One,Two,Three
115+
a,1,None
116+
b,2,two
117+
,3,None
118+
d,4,nan
119+
e,5,five
120+
nan,6,
121+
g,7,seven
122+
"""
123+
df = self.read_csv(
124+
StringIO(data), keep_default_na=False)
125+
xp = DataFrame({'One': ['a', 'b', '', 'd', 'e', 'nan', 'g'],
126+
'Two': [1, 2, 3, 4, 5, 6, 7],
127+
'Three': ['None', 'two', 'None', 'nan', 'five', '',
128+
'seven']})
129+
tm.assert_frame_equal(xp.reindex(columns=df.columns), df)
130+
131+
111132
def test_read_csv(self):
112133
if not compat.PY3:
113134
if 'win' in sys.platform:

0 commit comments

Comments
 (0)