Skip to content

Commit 0a7ba6f

Browse files
committed
ENH: add max_cols as keyword in DataFrame.info #2524
1 parent b2d9d35 commit 0a7ba6f

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

pandas/core/frame.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -1566,7 +1566,7 @@ def to_latex(self, buf=None, columns=None, col_space=None, colSpace=None,
15661566
if buf is None:
15671567
return formatter.buf.getvalue()
15681568

1569-
def info(self, verbose=True, buf=None):
1569+
def info(self, verbose=True, buf=None, max_cols=None):
15701570
"""
15711571
Concise summary of a DataFrame, used in __repr__ when very large.
15721572
@@ -1575,6 +1575,8 @@ def info(self, verbose=True, buf=None):
15751575
verbose : boolean, default True
15761576
If False, don't print column count summary
15771577
buf : writable buffer, defaults to sys.stdout
1578+
max_cols : int, default None
1579+
Determines whether full summary or short summary is printed
15781580
"""
15791581
from pandas.core.format import _put_lines
15801582

@@ -1594,7 +1596,10 @@ def info(self, verbose=True, buf=None):
15941596
cols = self.columns
15951597

15961598
# hack
1597-
if verbose and len(self.columns) < get_option('print.max_info_columns'):
1599+
if max_cols is None:
1600+
max_cols = get_option('print.max_info_columns')
1601+
1602+
if verbose and len(self.columns) <= max_cols:
15981603
lines.append('Data columns:')
15991604
space = max([len(com.pprint_thing(k)) for k in self.columns]) + 4
16001605
counts = self.count()

pandas/tests/test_frame.py

+11-3
Original file line numberDiff line numberDiff line change
@@ -3978,16 +3978,24 @@ def test_info(self):
39783978
def test_info_wide(self):
39793979
from pandas import set_option, reset_option
39803980
io = StringIO()
3981-
df = DataFrame(np.random.randn(5, 100))
3981+
df = DataFrame(np.random.randn(5, 101))
39823982
df.info(buf=io)
3983-
self.assert_(len(io.getvalue().splitlines()) == 4)
3983+
rs = io.getvalue()
3984+
self.assert_(len(rs.splitlines()) == 4)
3985+
3986+
io = StringIO()
3987+
df.info(buf=io, max_cols=101)
3988+
rs = io.getvalue()
3989+
self.assert_(len(rs.splitlines()) > 100)
3990+
xp = rs
39843991

39853992
set_option('print.max_info_columns', 101)
39863993
io = StringIO()
39873994
df.info(buf=io)
3988-
self.assert_(len(io.getvalue().splitlines()) > 100)
3995+
self.assert_(rs == xp)
39893996
reset_option('print.max_info_columns')
39903997

3998+
39913999
def test_info_duplicate_columns(self):
39924000
io = StringIO()
39934001

0 commit comments

Comments
 (0)