@@ -392,8 +392,68 @@ def __unicode__(self):
392392 Invoked by unicode(df) in py2 only. Yields a Unicode String in both
393393 py2/py3.
394394 """
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
397457
398458 def to_series (self , ** kwargs ):
399459 """
0 commit comments