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 : {‘left’, ‘right’, ‘both’, ‘neither’}, default ‘right’
Whether the interval is closed on the left-side, right-side, both or neither.
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
andright
must be from the same type, you must be able to compare them and they must satisfyleft <= 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
closed
Whether the interval is closed on the left-side, right-side, both or neither closed_left
Check if the interval is closed on the left side. closed_right
Check if the interval is closed on the right side. left
Left bound for the interval length
Return the length of the Interval mid
Return the midpoint of the Interval open_left
Check if the interval is open on the left side. open_right
Check if the interval is open on the right side. right
Right bound for the interval -
© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.Interval.html