pandas.Interval¶
-
class
pandas.Interval¶ Immutable object implementing an Interval, a bounded slice-like interval.
New in version 0.20.0.
Parameters: - left : orderable scalar
Left bound for the interval.
- right : orderable scalar
Right bound for the interval.
- closed : {‘right’, ‘left’, ‘both’, ‘neither’}, default ‘right’
Whether the interval is closed on the left-side, right-side, both or neither. See the Notes for more detailed explanation.
See also
IntervalIndex- An Index of Interval objects that are all closed on the same side.
cut- Convert continuous data into discrete bins (Categorical of Interval objects).
qcut- Convert continuous data into bins (Categorical of Interval objects) based on quantiles.
Period- Represents a period of time.
Notes
The parameters left and right must be from the same type, you must be able to compare them and they must satisfy
left <= right.A closed interval (in mathematics denoted by square brackets) contains its endpoints, i.e. the closed interval
[0, 5]is characterized by the conditions0 <= x <= 5. This is whatclosed='both'stands for. An open interval (in mathematics denoted by parentheses) does not contain its endpoints, i.e. the open interval(0, 5)is characterized by the conditions0 < x < 5. This is whatclosed='neither'stands for. Intervals can also be half-open or half-closed, i.e.[0, 5)is described by0 <= x < 5(closed='left') and(0, 5]is described by0 < x <= 5(closed='right').Examples
It is possible to build Intervals of different types, like numeric ones:
>>> iv = pd.Interval(left=0, right=5) >>> iv Interval(0, 5, closed='right')
You can check if an element belongs to it
>>> 2.5 in iv True
You can test the bounds (
closed='right', so0 < x <= 5):>>> 0 in iv False >>> 5 in iv True >>> 0.0001 in iv True
Calculate its length
>>> iv.length 5
You can operate with + and * over an Interval and the operation is applied to each of its bounds, so the result depends on the type of the bound elements
>>> shifted_iv = iv + 3 >>> shifted_iv Interval(3, 8, closed='right') >>> extended_iv = iv * 10.0 >>> extended_iv Interval(0.0, 50.0, closed='right')
To create a time interval you can use Timestamps as the bounds
>>> year_2017 = pd.Interval(pd.Timestamp('2017-01-01 00:00:00'), ... pd.Timestamp('2018-01-01 00:00:00'), ... closed='left') >>> pd.Timestamp('2017-01-01 00:00') in year_2017 True >>> year_2017.length Timedelta('365 days 00:00:00')
And also you can create string intervals
>>> volume_1 = pd.Interval('Ant', 'Dog', closed='both') >>> 'Bee' in volume_1 True
Attributes
closedWhether the interval is closed on the left-side, right-side, both or neither closed_leftCheck if the interval is closed on the left side. closed_rightCheck if the interval is closed on the right side. is_emptyIndicates if an interval is empty, meaning it contains no points. leftLeft bound for the interval lengthReturn the length of the Interval midReturn the midpoint of the Interval open_leftCheck if the interval is open on the left side. open_rightCheck if the interval is open on the right side. rightRight bound for the interval Methods
overlaps()Check whether two Interval objects overlap.