Skip to content

Commit 839c6f4

Browse files
committed
BUG: more encoding / unicode hacks related to #795
1 parent 435d3e8 commit 839c6f4

File tree

2 files changed

+31
-13
lines changed

2 files changed

+31
-13
lines changed

pandas/core/frame.py

+22-13
Original file line numberDiff line numberDiff line change
@@ -1116,36 +1116,45 @@ def info(self, verbose=True, buf=None):
11161116
if buf is None: # pragma: no cover
11171117
buf = sys.stdout
11181118

1119-
print >> buf, str(type(self))
1120-
print >> buf, self.index.summary()
1119+
def _put_lines(buf, lines):
1120+
if any(isinstance(x, unicode) for x in lines):
1121+
lines = [unicode(x) for x in lines]
1122+
print >> buf, '\n'.join(lines)
1123+
1124+
lines = []
1125+
1126+
lines.append(str(type(self)))
1127+
lines.append(self.index.summary())
11211128

11221129
if len(self.columns) == 0:
1123-
print >> buf, 'Empty %s' % type(self).__name__
1130+
lines.append('Empty %s' % type(self).__name__)
1131+
_put_lines(buf, lines)
11241132
return
11251133

11261134
cols = self.columns
11271135

11281136
if verbose:
1129-
print >> buf, 'Data columns:'
1137+
lines.append('Data columns:')
11301138
space = max([len(_stringify(k)) for k in self.columns]) + 4
1131-
col_counts = []
11321139
counts = self.count()
11331140
assert(len(cols) == len(counts))
11341141
for col, count in counts.iteritems():
1135-
colstr = _stringify(col)
1136-
col_counts.append('%s%d non-null values' %
1137-
(_put_str(colstr, space), count))
1138-
print >> buf, '\n'.join(col_counts)
1142+
if not isinstance(col, (unicode, str)):
1143+
col = str(col)
1144+
# colstr = _stringify(col)
1145+
lines.append(_put_str(col, space) +
1146+
'%d non-null values' % count)
11391147
else:
11401148
if len(cols) <= 2:
1141-
print >> buf, 'Columns: %s' % repr(cols)
1149+
lines.append('Columns: %s' % repr(cols))
11421150
else:
1143-
print >> buf, ('Columns: %s to %s' % (_stringify(cols[0]),
1144-
_stringify(cols[-1])))
1151+
lines.append('Columns: %s to %s' % (_stringify(cols[0]),
1152+
_stringify(cols[-1])))
11451153

11461154
counts = self.get_dtype_counts()
11471155
dtypes = ['%s(%d)' % k for k in sorted(counts.iteritems())]
1148-
buf.write('dtypes: %s' % ', '.join(dtypes))
1156+
lines.append('dtypes: %s' % ', '.join(dtypes))
1157+
_put_lines(buf, lines)
11491158

11501159
@property
11511160
def dtypes(self):

pandas/tests/test_format.py

+9
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,15 @@ def test_repr_corner(self):
144144
df = DataFrame({'foo' : np.inf * np.empty(10)})
145145
foo = repr(df)
146146

147+
def test_frame_info_encoding(self):
148+
index = ['\'Til There Was You (1997)',
149+
'\xc1 k\xf6ldum klaka (Cold Fever) (1994)']
150+
fmt.set_printoptions(max_rows=1)
151+
df = DataFrame(columns=['a', 'b', 'c'], index=index)
152+
repr(df)
153+
repr(df.T)
154+
fmt.set_printoptions(max_rows=200)
155+
147156
def test_to_string(self):
148157
from pandas import read_table
149158
import re

0 commit comments

Comments
 (0)