Skip to content

Commit 5bb9ba3

Browse files
committed
ENH: pd.DataFrame.info() to show line numbers GH17304
1 parent 96f92eb commit 5bb9ba3

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed

pandas/core/frame.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1751,45 +1751,46 @@ def info(self, verbose=None, buf=None, max_cols=None, memory_usage=None,
17511751
return
17521752

17531753
cols = self.columns
1754+
cols_count = len(cols)
17541755

17551756
# hack
17561757
if max_cols is None:
1757-
max_cols = get_option('display.max_info_columns',
1758-
len(self.columns) + 1)
1758+
max_cols = get_option('display.max_info_columns', cols_count + 1)
17591759

17601760
max_rows = get_option('display.max_info_rows', len(self) + 1)
17611761

17621762
if null_counts is None:
1763-
show_counts = ((len(self.columns) <= max_cols) and
1763+
show_counts = ((cols_count <= max_cols) and
17641764
(len(self) < max_rows))
17651765
else:
17661766
show_counts = null_counts
1767-
exceeds_info_cols = len(self.columns) > max_cols
1767+
exceeds_info_cols = cols_count > max_cols
17681768

17691769
def _verbose_repr():
1770-
lines.append('Data columns (total %d columns):' %
1771-
len(self.columns))
1772-
space = max([len(pprint_thing(k)) for k in self.columns]) + 4
1770+
lines.append('Data columns (total %d columns):' % cols_count)
1771+
space = max([len(pprint_thing(k)) for k in cols]) + 4
1772+
space_num = len(pprint_thing(cols_count)) + 2
17731773
counts = None
17741774

17751775
tmpl = "%s%s"
17761776
if show_counts:
17771777
counts = self.count()
17781778
if len(cols) != len(counts): # pragma: no cover
17791779
raise AssertionError('Columns must equal counts (%d != %d)'
1780-
% (len(cols), len(counts)))
1780+
% (cols_count, len(counts)))
17811781
tmpl = "%s non-null %s"
17821782

17831783
dtypes = self.dtypes
1784-
for i, col in enumerate(self.columns):
1784+
for i, col in enumerate(cols):
17851785
dtype = dtypes.iloc[i]
17861786
col = pprint_thing(col)
1787-
1787+
line_no = ("%d. " % (i + 1)).rjust(space_num)
17881788
count = ""
17891789
if show_counts:
17901790
count = counts.iloc[i]
17911791

1792-
lines.append(_put_str(col, space) + tmpl % (count, dtype))
1792+
lines.append(line_no + _put_str(col, space) +
1793+
tmpl % (count, dtype))
17931794

17941795
def _non_verbose_repr():
17951796
lines.append(self.columns.summary(name='Columns'))

pandas/tests/frame/test_repr_info.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,8 @@ def test_info_duplicate_columns_shows_correct_dtypes(self):
238238
frame.info(buf=io)
239239
io.seek(0)
240240
lines = io.readlines()
241-
assert 'a 1 non-null int64\n' == lines[3]
242-
assert 'a 1 non-null float64\n' == lines[4]
241+
assert '1. a 1 non-null int64\n' == lines[3]
242+
assert '2. a 1 non-null float64\n' == lines[4]
243243

244244
def test_info_shows_column_dtypes(self):
245245
dtypes = ['int64', 'float64', 'datetime64[ns]', 'timedelta64[ns]',

0 commit comments

Comments
 (0)