def __new__(cls, data, closed=None, name=None, copy=False, dtype=None, fastpath=False, verify_integrity=True): if fastpath: return cls._simple_new(data.left, data.right, closed, name, copy=copy, verify_integrity=False) if name is None and hasattr(data, 'name'): name = data.name if isinstance(data, IntervalIndex): left = data.left right = data.right closed = data.closed else: # don't allow scalars if is_scalar(data): cls._scalar_data_error(data) data = maybe_convert_platform(data) left, right, infer_closed = intervals_to_interval_bounds(data) if _all_not_none(closed, infer_closed) and closed != infer_closed: # GH 18421 msg = ("conflicting values for closed: constructor got " "'{closed}', inferred from data '{infer_closed}'" .format(closed=closed, infer_closed=infer_closed)) raise ValueError(msg) closed = closed or infer_closed return cls._simple_new(left, right, closed, name, copy=copy, verify_integrity=verify_integrity)
def __new__(cls, data, closed=None, dtype=None, copy=False, verify_integrity=True): if isinstance(data, ABCSeries) and is_interval_dtype(data): data = data.values if isinstance(data, (cls, ABCIntervalIndex)): left = data.left right = data.right closed = closed or data.closed else: # don't allow scalars if is_scalar(data): msg = ("{}(...) must be called with a collection of some kind," " {} was passed") raise TypeError(msg.format(cls.__name__, data)) # might need to convert empty or purely na data data = maybe_convert_platform_interval(data) left, right, infer_closed = intervals_to_interval_bounds( data, validate_closed=closed is None) closed = closed or infer_closed return cls._simple_new(left, right, closed, copy=copy, dtype=dtype, verify_integrity=verify_integrity)
def from_intervals(cls, data, name=None, copy=False): """ Construct an IntervalIndex from a 1d array of Interval objects Parameters ---------- data : array-like (1-dimensional) Array of Interval objects. All intervals must be closed on the same sides. name : object, optional Name to be stored in the index. copy : boolean, default False by-default copy the data, this is compat only and ignored Examples -------- >>> IntervalIndex.from_intervals([Interval(0, 1), Interval(1, 2)]) IntervalIndex(left=[0, 1], right=[1, 2], closed='right') The generic Index constructor work identically when it infers an array of all intervals: >>> Index([Interval(0, 1), Interval(1, 2)]) IntervalIndex(left=[0, 1], right=[1, 2], closed='right') """ data = np.asarray(data) left, right, closed = intervals_to_interval_bounds(data) return cls.from_arrays(left, right, closed, name=name, copy=False)
def from_intervals(cls, data, name=None, copy=False): """ Construct an IntervalIndex from a 1d array of Interval objects Parameters ---------- data : array-like (1-dimensional) Array of Interval objects. All intervals must be closed on the same sides. name : object, optional Name to be stored in the index. copy : boolean, default False by-default copy the data, this is compat only and ignored Examples -------- >>> IntervalIndex.from_intervals([Interval(0, 1), Interval(1, 2)]) IntervalIndex(left=[0, 1], right=[1, 2], closed='right') The generic Index constructor work identically when it infers an array of all intervals: >>> Index([Interval(0, 1), Interval(1, 2)]) IntervalIndex(left=[0, 1], right=[1, 2], closed='right') """ data = np.asarray(data) left, right, closed = intervals_to_interval_bounds(data) return cls.from_arrays(left, right, closed, name=name, copy=False)
def __new__(cls, data, closed=None, name=None, copy=False, dtype=None, fastpath=False, verify_integrity=True): if fastpath: return cls._simple_new(data.left, data.right, closed, name, copy=copy, verify_integrity=False) if name is None and hasattr(data, 'name'): name = data.name if isinstance(data, IntervalIndex): left = data.left right = data.right closed = data.closed else: # don't allow scalars if is_scalar(data): cls._scalar_data_error(data) data = maybe_convert_platform(data) left, right, infer_closed = intervals_to_interval_bounds(data) if _all_not_none(closed, infer_closed) and closed != infer_closed: # GH 18421 msg = ("conflicting values for closed: constructor got " "'{closed}', inferred from data '{infer_closed}'" .format(closed=closed, infer_closed=infer_closed)) raise ValueError(msg) closed = closed or infer_closed return cls._simple_new(left, right, closed, name, copy=copy, verify_integrity=verify_integrity)
def __new__( cls, data, closed=None, dtype=None, copy: bool = False, verify_integrity: bool = True, ): if isinstance(data, (ABCSeries, ABCIntervalIndex)) and is_interval_dtype( data.dtype ): data = data._values # TODO: extract_array? if isinstance(data, cls): left = data._left right = data._right closed = closed or data.closed if dtype is None or data.dtype == dtype: # This path will preserve id(result._combined) # TODO: could also validate dtype before going to simple_new combined = data._combined if copy: combined = combined.copy() result = cls._simple_new(combined, closed=closed) if verify_integrity: result._validate() return result else: # don't allow scalars if is_scalar(data): msg = ( f"{cls.__name__}(...) must be called with a collection " f"of some kind, {data} was passed" ) raise TypeError(msg) # might need to convert empty or purely na data data = maybe_convert_platform_interval(data) left, right, infer_closed = intervals_to_interval_bounds( data, validate_closed=closed is None ) closed = closed or infer_closed closed = closed or "right" left, right = _maybe_cast_inputs(left, right, copy, dtype) combined = _get_combined_data(left, right) result = cls._simple_new(combined, closed=closed) if verify_integrity: result._validate() return result
def from_intervals(cls, data, name=None, copy=False): """ Construct an IntervalIndex from a 1d array of Interval objects Parameters ---------- data : array-like (1-dimensional) Array of Interval objects. All intervals must be closed on the same sides. name : object, optional Name to be stored in the index. copy : boolean, default False by-default copy the data, this is compat only and ignored Examples -------- >>> pd.IntervalIndex.from_intervals([pd.Interval(0, 1), ... pd.Interval(1, 2)]) IntervalIndex([(0, 1], (1, 2]] closed='right', dtype='interval[int64]') The generic Index constructor work identically when it infers an array of all intervals: >>> pd.Index([pd.Interval(0, 1), pd.Interval(1, 2)]) IntervalIndex([(0, 1], (1, 2]] closed='right', dtype='interval[int64]') See Also -------- interval_range : Function to create a fixed frequency IntervalIndex IntervalIndex.from_arrays : Construct an IntervalIndex from a left and right array IntervalIndex.from_breaks : Construct an IntervalIndex from an array of splits IntervalIndex.from_tuples : Construct an IntervalIndex from a list/array of tuples """ if isinstance(data, IntervalIndex): left, right, closed = data.left, data.right, data.closed name = name or data.name else: data = maybe_convert_platform(data) left, right, closed = intervals_to_interval_bounds(data) return cls.from_arrays(left, right, closed, name=name, copy=False)
def from_intervals(cls, data, name=None, copy=False): """ Construct an IntervalIndex from a 1d array of Interval objects Parameters ---------- data : array-like (1-dimensional) Array of Interval objects. All intervals must be closed on the same sides. name : object, optional Name to be stored in the index. copy : boolean, default False by-default copy the data, this is compat only and ignored Examples -------- >>> pd.IntervalIndex.from_intervals([pd.Interval(0, 1), ... pd.Interval(1, 2)]) IntervalIndex([(0, 1], (1, 2]] closed='right', dtype='interval[int64]') The generic Index constructor work identically when it infers an array of all intervals: >>> pd.Index([pd.Interval(0, 1), pd.Interval(1, 2)]) IntervalIndex([(0, 1], (1, 2]] closed='right', dtype='interval[int64]') See Also -------- interval_range : Function to create a fixed frequency IntervalIndex IntervalIndex.from_arrays : Construct an IntervalIndex from a left and right array IntervalIndex.from_breaks : Construct an IntervalIndex from an array of splits IntervalIndex.from_tuples : Construct an IntervalIndex from a list/array of tuples """ if isinstance(data, IntervalIndex): left, right, closed = data.left, data.right, data.closed name = name or data.name else: data = maybe_convert_platform(data) left, right, closed = intervals_to_interval_bounds(data) return cls.from_arrays(left, right, closed, name=name, copy=False)
def __new__( cls, data, closed=None, dtype=None, copy: bool = False, verify_integrity: bool = True, ): if isinstance(data, (ABCSeries, ABCIntervalIndex)) and is_interval_dtype( data.dtype ): data = data._values # TODO: extract_array? if isinstance(data, cls): left = data._left right = data._right closed = closed or data.closed else: # don't allow scalars if is_scalar(data): msg = ( f"{cls.__name__}(...) must be called with a collection " f"of some kind, {data} was passed" ) raise TypeError(msg) # might need to convert empty or purely na data data = maybe_convert_platform_interval(data) left, right, infer_closed = intervals_to_interval_bounds( data, validate_closed=closed is None ) closed = closed or infer_closed return cls._simple_new( left, right, closed, copy=copy, dtype=dtype, verify_integrity=verify_integrity, )