Skip to content

Commit 38f5d43

Browse files
committed
BUG: fix exception in repr with tuple as Series name
1 parent 1845462 commit 38f5d43

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

RELEASE.rst

+1
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ pandas 0.5.1
134134
- Fix bug in join operations between Index and Int64Index (GH #367)
135135
- Handle min_periods=0 case in moving window functions (GH #365)
136136
- Fixed corner cases in DataFrame.apply/pivot with empty DataFrame (GH #378)
137+
- Fixed repr exception when Series name is a tuple
137138

138139
Thanks
139140
------

pandas/core/series.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ def _tidy_repr(self, max_vals=20):
380380
length=False,
381381
name=False)
382382
result = head + '\n...\n' + tail
383-
namestr = "Name: %s, " % self.name if self.name else ""
383+
namestr = "Name: %s, " % str(self.name) if self.name else ""
384384
result = '%s\n%sLength: %d' % (result, namestr, len(self))
385385
return result
386386

@@ -432,7 +432,7 @@ def _format(k, v):
432432

433433
footer = ''
434434
if name:
435-
footer += "Name: %s" % self.name if self.name else ''
435+
footer += "Name: %s" % str(self.name) if self.name else ''
436436

437437
if length:
438438
if footer:

pandas/tests/test_series.py

+12-4
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,15 @@ def test_name_printing(self):
103103
# test small series
104104
s = Series([0, 1, 2])
105105
s.name = "test"
106-
self.assert_("Name: test" in s.__repr__())
106+
self.assert_("Name: test" in repr(s))
107107
s.name = None
108-
self.assert_(not "Name:" in s.__repr__())
108+
self.assert_(not "Name:" in repr(s))
109109
# test big series (diff code path)
110110
s = Series(range(0,1000))
111111
s.name = "test"
112-
self.assert_("Name: test" in s.__repr__())
112+
self.assert_("Name: test" in repr(s))
113113
s.name = None
114-
self.assert_(not "Name:" in s.__repr__())
114+
self.assert_(not "Name:" in repr(s))
115115

116116
def test_pickle_preserve_name(self):
117117
unpickled = self._pickle_roundtrip(self.ts)
@@ -478,6 +478,14 @@ def test_repr(self):
478478
self.series[5:7] = np.NaN
479479
str(self.series)
480480

481+
# tuple name, e.g. from hierarchical index
482+
self.series.name = ('foo', 'bar', 'baz')
483+
repr(self.series)
484+
485+
biggie = Series(tm.randn(1000), index=np.arange(1000),
486+
name=('foo', 'bar', 'baz'))
487+
repr(biggie)
488+
481489
def test_to_string(self):
482490
from cStringIO import StringIO
483491
buf = StringIO()

0 commit comments

Comments
 (0)