@@ -428,12 +428,10 @@ def take(self, indexer, axis=0):
428
428
taken = self .view (np .ndarray ).take (indexer )
429
429
return self ._constructor (taken , name = self .name )
430
430
431
- def format (self , name = False , formatter = None , na_rep = 'NaN' ):
431
+ def format (self , name = False , formatter = None , ** kwargs ):
432
432
"""
433
433
Render a string representation of the Index
434
434
"""
435
- from pandas .core .format import format_array
436
-
437
435
header = []
438
436
if name :
439
437
header .append (com .pprint_thing (self .name ,
@@ -443,11 +441,13 @@ def format(self, name=False, formatter=None, na_rep='NaN'):
443
441
if formatter is not None :
444
442
return header + list (self .map (formatter ))
445
443
446
- if self .is_all_dates :
447
- return header + _date_formatter (self )
444
+ return self ._format_with_header (header , ** kwargs )
448
445
446
+ def _format_with_header (self , header , na_rep = 'NaN' , ** kwargs ):
449
447
values = self .values
450
448
449
+ from pandas .core .format import format_array
450
+
451
451
if values .dtype == np .object_ :
452
452
values = lib .maybe_convert_objects (values , safe = 1 )
453
453
@@ -466,17 +466,18 @@ def format(self, name=False, formatter=None, na_rep='NaN'):
466
466
result = _trim_front (format_array (values , None , justify = 'left' ))
467
467
return header + result
468
468
469
- def to_native_types (self , slicer = None , na_rep = '' , float_format = None ):
469
+ def to_native_types (self , slicer = None , ** kwargs ):
470
+ """ slice and dice then format """
470
471
values = self
471
472
if slicer is not None :
472
473
values = values [slicer ]
473
- if self .is_all_dates :
474
- return _date_formatter (values )
475
- else :
476
- mask = isnull (values )
477
- values = np .array (values ,dtype = object )
478
- values [mask ] = na_rep
474
+ return values ._format_native_types (** kwargs )
479
475
476
+ def _format_native_types (self , na_rep = '' , ** kwargs ):
477
+ """ actually format my specific types """
478
+ mask = isnull (self )
479
+ values = np .array (self ,dtype = object ,copy = True )
480
+ values [mask ] = na_rep
480
481
return values .tolist ()
481
482
482
483
def equals (self , other ):
@@ -1320,6 +1321,11 @@ def inferred_type(self):
1320
1321
def _constructor (self ):
1321
1322
return Int64Index
1322
1323
1324
+ @property
1325
+ def asi8 (self ):
1326
+ # do not cache or you'll create a memory leak
1327
+ return self .values .view ('i8' )
1328
+
1323
1329
@property
1324
1330
def is_all_dates (self ):
1325
1331
"""
@@ -1489,11 +1495,8 @@ def __repr__(self):
1489
1495
def __len__ (self ):
1490
1496
return len (self .labels [0 ])
1491
1497
1492
- def to_native_types (self , slicer = None , na_rep = '' , float_format = None ):
1493
- ix = self
1494
- if slicer :
1495
- ix = self [slicer ]
1496
- return ix .tolist ()
1498
+ def _format_native_types (self , ** kwargs ):
1499
+ return self .tolist ()
1497
1500
1498
1501
@property
1499
1502
def _constructor (self ):
@@ -1651,13 +1654,13 @@ def format(self, space=2, sparsify=None, adjoin=True, names=False,
1651
1654
# we have some NA
1652
1655
mask = lab == - 1
1653
1656
if mask .any ():
1654
- formatted = np .array (formatted )
1657
+ formatted = np .array (formatted , dtype = object )
1655
1658
formatted [mask ] = na_rep
1656
1659
formatted = formatted .tolist ()
1657
1660
1658
1661
else :
1659
1662
# weird all NA case
1660
- formatted = [com .pprint_thing (x , escape_chars = ('\t ' , '\r ' , '\n ' ))
1663
+ formatted = [com .pprint_thing (na_rep if isnull ( x ) else x , escape_chars = ('\t ' , '\r ' , '\n ' ))
1661
1664
for x in com .take_1d (lev .values , lab )]
1662
1665
stringified_levels .append (formatted )
1663
1666
@@ -1669,6 +1672,7 @@ def format(self, space=2, sparsify=None, adjoin=True, names=False,
1669
1672
level .append (com .pprint_thing (name , escape_chars = ('\t ' , '\r ' , '\n ' ))
1670
1673
if name is not None else '' )
1671
1674
1675
+
1672
1676
level .extend (np .array (lev , dtype = object ))
1673
1677
result_levels .append (level )
1674
1678
@@ -2598,23 +2602,6 @@ def _wrap_joined_index(self, joined, other):
2598
2602
2599
2603
# For utility purposes
2600
2604
2601
- def _date_formatter (obj , na_rep = u'NaT' ):
2602
- data = list (obj )
2603
-
2604
- # tz formatter or time formatter
2605
- zero_time = time (0 , 0 )
2606
- for d in data :
2607
- if d .time () != zero_time or d .tzinfo is not None :
2608
- return [u'%s' % x for x in data ]
2609
-
2610
- values = np .array (data ,dtype = object )
2611
- mask = isnull (obj .values )
2612
- values [mask ] = na_rep
2613
-
2614
- imask = - mask
2615
- values [imask ] = np .array ([ u'%d-%.2d-%.2d' % (dt .year , dt .month , dt .day ) for dt in values [imask ] ])
2616
- return values .tolist ()
2617
-
2618
2605
def _sparsify (label_list , start = 0 ):
2619
2606
pivoted = zip (* label_list )
2620
2607
k = len (label_list )
0 commit comments