Skip to content

Commit

Permalink
Backport PR pandas-dev#25202: BUG-25061 fix printing indices with NaNs
Browse files Browse the repository at this point in the history
  • Loading branch information
JustinZhengBC authored and MeeseeksDev[bot] committed Feb 9, 2019
1 parent 7f44027 commit e0053b6
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 3 deletions.
2 changes: 1 addition & 1 deletion doc/source/whatsnew/v0.24.2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Bug Fixes
**I/O**

- Bug in reading a HDF5 table-format ``DataFrame`` created in Python 2, in Python 3 (:issue:`24925`)
-
- Bug where float indexes could have misaligned values when printing (:issue:`25061`)
-

**Categorical**
Expand Down
11 changes: 9 additions & 2 deletions pandas/io/formats/format.py
Original file line number Diff line number Diff line change
Expand Up @@ -1060,19 +1060,26 @@ def get_result_as_array(self):
def format_values_with(float_format):
formatter = self._value_formatter(float_format, threshold)

# default formatter leaves a space to the left when formatting
# floats, must be consistent for left-justifying NaNs (GH #25061)
if self.justify == 'left':
na_rep = ' ' + self.na_rep
else:
na_rep = self.na_rep

# separate the wheat from the chaff
values = self.values
mask = isna(values)
if hasattr(values, 'to_dense'): # sparse numpy ndarray
values = values.to_dense()
values = np.array(values, dtype='object')
values[mask] = self.na_rep
values[mask] = na_rep
imask = (~mask).ravel()
values.flat[imask] = np.array([formatter(val)
for val in values.ravel()[imask]])

if self.fixed_width:
return _trim_zeros(values, self.na_rep)
return _trim_zeros(values, na_rep)

return values

Expand Down
8 changes: 8 additions & 0 deletions pandas/tests/series/test_repr.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,14 @@ def test_latex_repr(self):

assert s._repr_latex_() is None

def test_index_repr_in_frame_with_nan(self):
# see gh-25061
i = Index([1, np.nan])
s = Series([1, 2], index=i)
exp = """1.0 1\nNaN 2\ndtype: int64"""

assert repr(s) == exp


class TestCategoricalRepr(object):

Expand Down

0 comments on commit e0053b6

Please sign in to comment.