@@ -94,16 +94,28 @@ def _get_interval_closed_bounds(interval):
94
94
return left , right
95
95
96
96
97
- def _maybe_convert_platform_interval ( data ):
97
+ def maybe_convert_platform_interval ( values ):
98
98
"""
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
100
112
"""
101
- if isinstance (data , (list , tuple )) and len (data ) == 0 :
113
+ if isinstance (values , (list , tuple )) and len (values ) == 0 :
102
114
# GH 19016
103
115
# empty lists/tuples get object dtype by default, but this is not
104
116
# prohibited for IntervalIndex, so coerce to integer instead
105
117
return np .array ([], dtype = np .intp )
106
- return maybe_convert_platform (data )
118
+ return maybe_convert_platform (values )
107
119
108
120
109
121
def _new_IntervalIndex (cls , d ):
@@ -220,7 +232,7 @@ def __new__(cls, data, closed=None,
220
232
if is_scalar (data ):
221
233
cls ._scalar_data_error (data )
222
234
223
- data = _maybe_convert_platform_interval (data )
235
+ data = maybe_convert_platform_interval (data )
224
236
left , right , infer_closed = intervals_to_interval_bounds (data )
225
237
226
238
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):
422
434
IntervalIndex.from_tuples : Construct an IntervalIndex from a
423
435
list/array of tuples
424
436
"""
425
- breaks = _maybe_convert_platform_interval (breaks )
437
+ breaks = maybe_convert_platform_interval (breaks )
426
438
427
439
return cls .from_arrays (breaks [:- 1 ], breaks [1 :], closed ,
428
440
name = name , copy = copy )
@@ -463,8 +475,8 @@ def from_arrays(cls, left, right, closed='right', name=None, copy=False):
463
475
IntervalIndex.from_tuples : Construct an IntervalIndex from a
464
476
list/array of tuples
465
477
"""
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 )
468
480
469
481
return cls ._simple_new (left , right , closed , name = name ,
470
482
copy = copy , verify_integrity = True )
@@ -512,7 +524,7 @@ def from_intervals(cls, data, name=None, copy=False):
512
524
left , right , closed = data .left , data .right , data .closed
513
525
name = name or data .name
514
526
else :
515
- data = _maybe_convert_platform_interval (data )
527
+ data = maybe_convert_platform_interval (data )
516
528
left , right , closed = intervals_to_interval_bounds (data )
517
529
return cls .from_arrays (left , right , closed , name = name , copy = False )
518
530
0 commit comments