@@ -440,6 +440,7 @@ def _format_data(self):
440
440
sep = ','
441
441
max_seq_items = get_option ('display.max_seq_items' )
442
442
formatter = self ._formatter_func
443
+ needs_justify = self .inferred_type in ['string' ,'categorical' ]
443
444
444
445
def best_len (values ):
445
446
return max ([len (x ) for x in values ]) + 2
@@ -453,23 +454,27 @@ def best_rows(values, max_len):
453
454
n_rows = int (ceil (len (values ) / float (n_per_row )))
454
455
return n_per_row , n_rows
455
456
456
- def best_fit (values , max_len , justify = False ):
457
+ def best_fit (values , max_len , n_rows = None , justify = False ):
457
458
458
459
# number of rows to generate
459
- n_per_row , n_rows = best_rows (values , max_len )
460
+ if n_rows is None :
461
+ n_per_row , n_rows = best_rows (values , max_len )
462
+ else :
463
+ n_per_row = len (values )
460
464
461
465
# adjust all values to max length if we have multi-lines
462
- if n_rows > 1 or justify :
466
+ if justify :
463
467
values = [values [0 ].rjust (max_len - 2 )] + [x .rjust (max_len - 1 ) for x in values [1 :]]
464
- sep_elements = sep
468
+ multi_line_space = space1
465
469
else :
466
- sep_elements = sep + ' '
470
+ multi_line_space = space2
467
471
472
+ sep_elements = sep + ' '
468
473
summary = ''
469
474
for i in range (n_rows - 1 ):
470
- summary += sep .join (values [i * n_per_row :(i + 1 )* n_per_row ])
475
+ summary += sep_elements .join (values [i * n_per_row :(i + 1 )* n_per_row ])
471
476
summary += sep
472
- summary += space1
477
+ summary += multi_line_space
473
478
summary += sep_elements .join (values [(n_rows - 1 )* n_per_row :n_rows * n_per_row ])
474
479
475
480
return summary
@@ -491,10 +496,17 @@ def best_fit(values, max_len, justify=False):
491
496
tail = [ formatter (x ) for x in self [- n :] ]
492
497
max_len = max (best_len (head ),best_len (tail ))
493
498
499
+ if needs_justify :
500
+ n_rows = 1
501
+ justify = False
502
+ else :
503
+ n_rows = None
504
+ justify = True
505
+
494
506
summary = '['
495
- summary += best_fit (head , max_len , justify = True )
507
+ summary += best_fit (head , max_len , n_rows = n_rows , justify = justify )
496
508
summary += ',' + space1 + ' ...' + space2
497
- summary += best_fit (tail , max_len , justify = True )
509
+ summary += best_fit (tail , max_len , n_rows = n_rows , justify = justify )
498
510
summary += '],'
499
511
summary += space1
500
512
@@ -2936,7 +2948,9 @@ def _format_attrs(self):
2936
2948
"""
2937
2949
Return a list of tuples of the (attr,formatted_value)
2938
2950
"""
2939
- attrs = [('categories' , default_pprint (self .categories )),
2951
+ max_categories = (10 if get_option ("display.max_categories" ) == 0
2952
+ else get_option ("display.max_categories" ))
2953
+ attrs = [('categories' , default_pprint (self .categories , max_seq_items = max_categories )),
2940
2954
('ordered' ,self .ordered )]
2941
2955
if self .name is not None :
2942
2956
attrs .append (('name' ,default_pprint (self .name )))
0 commit comments