@@ -392,8 +392,68 @@ def __unicode__(self):
392
392
Invoked by unicode(df) in py2 only. Yields a Unicode String in both
393
393
py2/py3.
394
394
"""
395
- prepr = default_pprint (self )
396
- return "%s(%s, dtype='%s')" % (type (self ).__name__ , prepr , self .dtype )
395
+ klass = self .__class__ .__name__
396
+ data = self ._format_data ()
397
+ attrs = self ._format_attrs ()
398
+ max_seq_items = get_option ('display.max_seq_items' )
399
+ if len (self ) > max_seq_items :
400
+ space = "\n %s" % (' ' * (len (klass ) + 1 ))
401
+ else :
402
+ space = " "
403
+
404
+ prepr = (u (",%s" ) % space ).join ([u ("%s=%s" ) % (k , v )
405
+ for k , v in attrs ])
406
+ res = u ("%s(%s,%s%s)" ) % (klass ,
407
+ data ,
408
+ space ,
409
+ prepr )
410
+
411
+ return res
412
+
413
+ @property
414
+ def _formatter_func (self ):
415
+ """
416
+ Return the formatted data as a unicode string
417
+ """
418
+ return default_pprint
419
+
420
+ def _format_data (self ):
421
+ """
422
+ Return the formatted data as a unicode string
423
+ """
424
+
425
+ max_seq_items = get_option ('display.max_seq_items' )
426
+ formatter = self ._formatter_func
427
+ n = len (self )
428
+ if n == 0 :
429
+ summary = '[]'
430
+ elif n == 1 :
431
+ first = formatter (self [0 ])
432
+ summary = '[%s]' % first
433
+ elif n == 2 :
434
+ first = formatter (self [0 ])
435
+ last = formatter (self [- 1 ])
436
+ summary = '[%s, %s]' % (first , last )
437
+ elif n > max_seq_items :
438
+ n = min (max_seq_items // 2 ,2 )
439
+ head = ', ' .join ([ formatter (x ) for x in self [:n ] ])
440
+ tail = ', ' .join ([ formatter (x ) for x in self [- n :] ])
441
+ summary = '[%s, ..., %s]' % (head , tail )
442
+ else :
443
+ summary = "[%s]" % ', ' .join ([ formatter (x ) for x in self ])
444
+
445
+ return summary
446
+
447
+
448
+ def _format_attrs (self ):
449
+ """
450
+ Return a list of tuples of the (attr,formatted_value)
451
+ """
452
+ attrs = []
453
+ if self .name is not None :
454
+ attrs .append (('name' ,default_pprint (self .name )))
455
+ attrs .append (('dtype' ,"'%s'" % self .dtype ))
456
+ return attrs
397
457
398
458
def to_series (self , ** kwargs ):
399
459
"""
0 commit comments