Skip to content

Commit a34ac81

Browse files
author
y-p
committed
ENH: convert more internal string processing to unicode, SeriesFormatter, Index.format, etc'
1 parent 2599741 commit a34ac81

File tree

3 files changed

+14
-22
lines changed

3 files changed

+14
-22
lines changed

pandas/core/format.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class SeriesFormatter(object):
6262
def __init__(self, series, buf=None, header=True, length=True,
6363
na_rep='NaN', name=False, float_format=None):
6464
self.series = series
65-
self.buf = buf if buf is not None else StringIO()
65+
self.buf = buf if buf is not None else StringIO(u"")
6666
self.name = name
6767
self.na_rep = na_rep
6868
self.length = length
@@ -112,7 +112,7 @@ def to_string(self):
112112
series = self.series
113113

114114
if len(series) == 0:
115-
return ''
115+
return u''
116116

117117
fmt_index, have_header = self._get_formatted_index()
118118
fmt_values = self._get_formatted_values()
@@ -719,18 +719,10 @@ def __init__(self, values, digits=7, formatter=None, na_rep='NaN',
719719
self.justify = justify
720720

721721
def get_result(self):
722-
if self._have_unicode():
723-
fmt_values = self._format_strings(use_unicode=True)
724-
else:
725-
fmt_values = self._format_strings(use_unicode=False)
726-
722+
fmt_values = self._format_strings()
727723
return _make_fixed_width(fmt_values, self.justify)
728724

729-
def _have_unicode(self):
730-
mask = lib.map_infer(self.values, lambda x: isinstance(x, unicode))
731-
return mask.any()
732-
733-
def _format_strings(self, use_unicode=False):
725+
def _format_strings(self):
734726
if self.float_format is None:
735727
float_format = print_config.float_format
736728
if float_format is None:

pandas/core/index.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -394,8 +394,8 @@ def format(self, name=False):
394394
result = []
395395
for dt in self:
396396
if dt.time() != zero_time or dt.tzinfo is not None:
397-
return header + ['%s' % x for x in self]
398-
result.append('%d-%.2d-%.2d' % (dt.year, dt.month, dt.day))
397+
return header + [u'%s' % x for x in self]
398+
result.append(u'%d-%.2d-%.2d' % (dt.year, dt.month, dt.day))
399399
return header + result
400400

401401
values = self.values
@@ -1496,7 +1496,7 @@ def format(self, space=2, sparsify=None, adjoin=True, names=False,
14961496
formatted = lev.take(lab).format()
14971497
else:
14981498
# weird all NA case
1499-
formatted = [str(x) for x in com.take_1d(lev.values, lab)]
1499+
formatted = [com.pprint_thing(x) for x in com.take_1d(lev.values, lab)]
15001500
stringified_levels.append(formatted)
15011501

15021502
result_levels = []

pandas/tests/test_format.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -840,24 +840,24 @@ def test_to_string(self):
840840
def test_to_string_mixed(self):
841841
s = Series(['foo', np.nan, -1.23, 4.56])
842842
result = s.to_string()
843-
expected = ('0 foo\n'
844-
'1 NaN\n'
845-
'2 -1.23\n'
846-
'3 4.56')
843+
expected = (u'0 foo\n'
844+
u'1 NaN\n'
845+
u'2 -1.23\n'
846+
u'3 4.56')
847847
self.assertEqual(result, expected)
848848

849849
# but don't count NAs as floats
850850
s = Series(['foo', np.nan, 'bar', 'baz'])
851851
result = s.to_string()
852-
expected = ('0 foo\n'
852+
expected = (u'0 foo\n'
853853
'1 NaN\n'
854854
'2 bar\n'
855855
'3 baz')
856856
self.assertEqual(result, expected)
857857

858858
s = Series(['foo', 5, 'bar', 'baz'])
859859
result = s.to_string()
860-
expected = ('0 foo\n'
860+
expected = (u'0 foo\n'
861861
'1 5\n'
862862
'2 bar\n'
863863
'3 baz')
@@ -868,7 +868,7 @@ def test_to_string_float_na_spacing(self):
868868
s[::2] = np.nan
869869

870870
result = s.to_string()
871-
expected = ('0 NaN\n'
871+
expected = (u'0 NaN\n'
872872
'1 1.5678\n'
873873
'2 NaN\n'
874874
'3 -3.0000\n'

0 commit comments

Comments
 (0)