Skip to content

Commit 25b50b3

Browse files
committed
DISP: show column dtype in DataFrame.info() output
1 parent ceec8bf commit 25b50b3

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

pandas/core/frame.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1426,10 +1426,12 @@ def info(self, verbose=True, buf=None, max_cols=None):
14261426
if len(cols) != len(counts): # pragma: no cover
14271427
raise AssertionError('Columns must equal counts (%d != %d)' %
14281428
(len(cols), len(counts)))
1429+
dtypes = self.dtypes
14291430
for col, count in compat.iteritems(counts):
1431+
dtype = dtypes[col]
14301432
col = com.pprint_thing(col)
14311433
lines.append(_put_str(col, space) +
1432-
'%d non-null values' % count)
1434+
'%d non-null %s' % (count, dtype))
14331435
else:
14341436
lines.append(self.columns.summary(name='Columns'))
14351437

pandas/tests/test_frame.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6018,6 +6018,21 @@ def test_info_duplicate_columns(self):
60186018
columns=['a', 'a', 'b', 'b'])
60196019
frame.info(buf=io)
60206020

6021+
def test_info_shows_column_dtypes(self):
6022+
dtypes = ['int64', 'float64', 'datetime64[ns]', 'timedelta64[ns]',
6023+
'complex128', 'object', 'bool']
6024+
data = {}
6025+
n = 10
6026+
for i, dtype in enumerate(dtypes):
6027+
data[i] = np.random.randint(2, size=n).astype(dtype)
6028+
df = DataFrame(data)
6029+
buf = StringIO()
6030+
df.info(buf=buf)
6031+
res = buf.getvalue()
6032+
for i, dtype in enumerate(dtypes):
6033+
name = '%d %d non-null %s' % (i, n, dtype)
6034+
assert name in res
6035+
60216036
def test_dtypes(self):
60226037
self.mixed_frame['bool'] = self.mixed_frame['A'] > 0
60236038
result = self.mixed_frame.dtypes

0 commit comments

Comments
 (0)