Skip to content

Commit ac5aa58

Browse files
committed
more fixups
1 parent e17e2b8 commit ac5aa58

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

doc/source/whatsnew/v0.16.1.txt

+2-5
Original file line numberDiff line numberDiff line change
@@ -282,9 +282,6 @@ Previous Behavior
282282

283283
.. code-block:: python
284284

285-
In [1]: pd.get_option('max_seq_items')
286-
Out[1]: 100
287-
288285
In [2]: pd.Index(range(4),name='foo')
289286
Out[2]: Int64Index([0, 1, 2, 3], dtype='int64')
290287

@@ -307,15 +304,15 @@ New Behavior
307304

308305
.. ipython:: python
309306

310-
pd.get_option('max_seq_items')
307+
pd.set_option('display.width',100)
311308
pd.Index(range(4),name='foo')
312309
pd.Index(range(25),name='foo')
313310
pd.Index(range(104),name='foo')
311+
pd.Index(['datetime', 'sA', 'sB', 'sC', 'flow', 'error', 'temp', 'ref', 'a_bit_a_longer_one']*2)
314312
pd.CategoricalIndex(['a','bb','ccc','dddd'],ordered=True,name='foobar')
315313
pd.CategoricalIndex(['a','bb','ccc','dddd']*10,ordered=True,name='foobar')
316314
pd.CategoricalIndex(['a','bb','ccc','dddd']*100,ordered=True,name='foobar')
317315
pd.CategoricalIndex(np.arange(1000),ordered=True,name='foobar')
318-
pd.Index(['a','bb','ccc','dddd']*100)
319316
pd.date_range('20130101',periods=4,name='foo',tz='US/Eastern')
320317
pd.date_range('20130101',periods=25,name='foo',tz='US/Eastern')
321318
pd.date_range('20130101',periods=104,name='foo',tz='US/Eastern')

pandas/core/index.py

+18-15
Original file line numberDiff line numberDiff line change
@@ -437,17 +437,24 @@ def _format_data(self):
437437
from pandas.core.format import get_console_size
438438
display_width, _ = get_console_size()
439439
if display_width is None:
440-
display_width = get_option('display.width')
440+
display_width = get_option('display.width') or 80
441441

442442
space1 = "\n%s" % (' ' * (len(self.__class__.__name__) + 1))
443443
space2 = "\n%s" % (' ' * (len(self.__class__.__name__) + 2))
444444

445+
n = len(self)
445446
sep = ','
446447
max_seq_items = get_option('display.max_seq_items')
447448
formatter = self._formatter_func
448-
needs_justify = self.inferred_type in ['string','categorical']
449+
450+
# do we want to justify (only do so for non-objects)
451+
is_justify = not (self.inferred_type == 'string' or self.inferred_type == 'categorical' and is_object_dtype(self.categories))
452+
453+
# are we a truncated display
454+
is_truncated = n > max_seq_items
449455

450456
def _extend_line(s, line, value, display_width, next_line_prefix):
457+
451458
if len(line.rstrip()) + len(value.rstrip()) >= display_width:
452459
s += line.rstrip()
453460
line = next_line_prefix
@@ -460,7 +467,6 @@ def best_len(values):
460467
else:
461468
return 0
462469

463-
n = len(self)
464470
if n == 0:
465471
summary = '[], '
466472
elif n == 1:
@@ -471,26 +477,23 @@ def best_len(values):
471477
last = formatter(self[-1])
472478
summary = '[%s, %s], ' % (first, last)
473479
else:
480+
474481
if n > max_seq_items:
475482
n = min(max_seq_items//2,10)
476483
head = [ formatter(x) for x in self[:n] ]
477484
tail = [ formatter(x) for x in self[-n:] ]
478-
summary_insert = True
479485
else:
480486
head = []
481487
tail = [ formatter(x) for x in self ]
482-
summary_insert = False
483-
484-
if needs_justify:
485-
justify = False
486-
else:
487-
justify = True
488488

489489
# adjust all values to max length if needed
490-
if justify:
491-
max_len = max(best_len(head), best_len(tail))
492-
head = [x.rjust(max_len) for x in head]
493-
tail = [x.rjust(max_len) for x in tail]
490+
if is_justify:
491+
492+
# however, if we are not truncated and we are only a single line, then don't justify
493+
if is_truncated or not (len(', '.join(head)) < display_width and len(', '.join(tail)) < display_width):
494+
max_len = max(best_len(head), best_len(tail))
495+
head = [x.rjust(max_len) for x in head]
496+
tail = [x.rjust(max_len) for x in tail]
494497

495498
summary = ""
496499
line = space2
@@ -499,7 +502,7 @@ def best_len(values):
499502
word = head[i] + sep + ' '
500503
summary, line = _extend_line(summary, line, word,
501504
display_width, space2)
502-
if summary_insert:
505+
if is_truncated:
503506
summary += line + space2 + '...'
504507
line = space2
505508

0 commit comments

Comments
 (0)