Skip to content

Commit f643da9

Browse files
committed
BUG: workaround when ndarray.__repr__ fails on Index object with unicode values, close #1010
1 parent 68a2791 commit f643da9

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

pandas/core/index.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,14 @@ def __new__(cls, data, dtype=None, copy=False, name=None):
8585
def __array_finalize__(self, obj):
8686
self.name = getattr(obj, 'name', None)
8787

88+
def __repr__(self):
89+
try:
90+
result = np.ndarray.__repr__(self)
91+
except UnicodeEncodeError:
92+
result = 'Index([%s])' % (', '.join([repr(x) for x in self]))
93+
94+
return result
95+
8896
def astype(self, dtype):
8997
return Index(self.values.astype(dtype), name=self.name,
9098
dtype=dtype)

pandas/tests/test_multilevel.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,6 +1241,17 @@ def test_drop_level(self):
12411241
expected = self.frame.ix[[0, 2, 3, 6, 7, 9]].T
12421242
assert_frame_equal(result, expected)
12431243

1244+
def test_unicode_repr_issues(self):
1245+
levels = [Index([u'a/\u03c3', u'b/\u03c3',u'c/\u03c3']),
1246+
Index([0, 1])]
1247+
labels = [np.arange(3).repeat(2), np.tile(np.arange(2), 3)]
1248+
index = MultiIndex(levels=levels, labels=labels)
1249+
1250+
repr(index.levels)
1251+
1252+
# NumPy bug
1253+
# repr(index.get_level_values(1))
1254+
12441255
if __name__ == '__main__':
12451256

12461257
# unittest.main()

0 commit comments

Comments
 (0)