@@ -94,16 +94,28 @@ def _get_interval_closed_bounds(interval):
9494 return left , right
9595
9696
97- def _maybe_convert_platform_interval ( data ):
97+ def maybe_convert_platform_interval ( values ):
9898 """
99- Try to do platform conversion, with special casing for IntervalIndex
99+ Try to do platform conversion, with special casing for IntervalIndex.
100+ Wrapper around maybe_convert_platform that alters the default return
101+ dtype in certain cases to be compatible with IntervalIndex. For example,
102+ empty lists return with integer dtype instead of object dtype, which is
103+ prohibited for IntervalIndex.
104+
105+ Parameters
106+ ----------
107+ values : array-like
108+
109+ Returns
110+ -------
111+ array
100112 """
101- if isinstance (data , (list , tuple )) and len (data ) == 0 :
113+ if isinstance (values , (list , tuple )) and len (values ) == 0 :
102114 # GH 19016
103115 # empty lists/tuples get object dtype by default, but this is not
104116 # prohibited for IntervalIndex, so coerce to integer instead
105117 return np .array ([], dtype = np .intp )
106- return maybe_convert_platform (data )
118+ return maybe_convert_platform (values )
107119
108120
109121def _new_IntervalIndex (cls , d ):
@@ -220,7 +232,7 @@ def __new__(cls, data, closed=None,
220232 if is_scalar (data ):
221233 cls ._scalar_data_error (data )
222234
223- data = _maybe_convert_platform_interval (data )
235+ data = maybe_convert_platform_interval (data )
224236 left , right , infer_closed = intervals_to_interval_bounds (data )
225237
226238 if _all_not_none (closed , infer_closed ) and closed != infer_closed :
@@ -422,7 +434,7 @@ def from_breaks(cls, breaks, closed='right', name=None, copy=False):
422434 IntervalIndex.from_tuples : Construct an IntervalIndex from a
423435 list/array of tuples
424436 """
425- breaks = _maybe_convert_platform_interval (breaks )
437+ breaks = maybe_convert_platform_interval (breaks )
426438
427439 return cls .from_arrays (breaks [:- 1 ], breaks [1 :], closed ,
428440 name = name , copy = copy )
@@ -463,8 +475,8 @@ def from_arrays(cls, left, right, closed='right', name=None, copy=False):
463475 IntervalIndex.from_tuples : Construct an IntervalIndex from a
464476 list/array of tuples
465477 """
466- left = _maybe_convert_platform_interval (left )
467- right = _maybe_convert_platform_interval (right )
478+ left = maybe_convert_platform_interval (left )
479+ right = maybe_convert_platform_interval (right )
468480
469481 return cls ._simple_new (left , right , closed , name = name ,
470482 copy = copy , verify_integrity = True )
@@ -512,7 +524,7 @@ def from_intervals(cls, data, name=None, copy=False):
512524 left , right , closed = data .left , data .right , data .closed
513525 name = name or data .name
514526 else :
515- data = _maybe_convert_platform_interval (data )
527+ data = maybe_convert_platform_interval (data )
516528 left , right , closed = intervals_to_interval_bounds (data )
517529 return cls .from_arrays (left , right , closed , name = name , copy = False )
518530
0 commit comments