From 21184fed3284fc8c5e2c6c4898ed8786526a581c Mon Sep 17 00:00:00 2001 From: qsnake_wsl Date: Fri, 23 Feb 2024 15:18:00 +0800 Subject: [PATCH 1/5] write the docsting in core/indexes/interval.py about IntervalIndex's left, mid, length --- ci/code_checks.sh | 3 -- pandas/core/indexes/interval.py | 61 +++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 3 deletions(-) diff --git a/ci/code_checks.sh b/ci/code_checks.sh index 231d40e17c0c0..2ff759374475a 100755 --- a/ci/code_checks.sh +++ b/ci/code_checks.sh @@ -150,9 +150,6 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then pandas.Index.empty\ pandas.Index.names\ pandas.Index.view\ - pandas.IntervalIndex.left\ - pandas.IntervalIndex.length\ - pandas.IntervalIndex.mid\ pandas.IntervalIndex.right\ pandas.MultiIndex.codes\ pandas.Period.freq\ diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index 7695193a15608..58c18f932a589 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -827,18 +827,79 @@ def _is_comparable_dtype(self, dtype: DtypeObj) -> bool: @cache_readonly def left(self) -> Index: + """ + Return intervals' left value. + + Return number index which contains all intervals' left value in Intervalindex's interval. + + Returns + ------- + Int64Index or Float64Index : depend on if the type of left value. + + See Also + -------- + IntervalIndex : The structure of IntervalIndex. + + Examples + -------- + >>> pd.interval_range(start=0, end=5) + IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]], dtype='interval[int64, right]') + >>> pd.interval_range(start=0, end=5).left + Int64Index([0, 1, 2, 3, 4], dtype='int64') + """ return Index(self._data.left, copy=False) + @cache_readonly def right(self) -> Index: return Index(self._data.right, copy=False) @cache_readonly def mid(self) -> Index: + """ + Return the intervals' mean by Float64Index. + + Return Float64Index which contains all intervals' left and right value mean. + + Returns + ------- + Float64Index + + See Also + -------- + IntervalIndex : The structure of IntervalIndex. + + Examples + -------- + >>> pd.interval_range(start=0, end=10, periods=3) + IntervalIndex([(0.0, 3.3333333333333335], (3.3333333333333335, 6.666666666666667], (6.666666666666667, 10.0]], dtype='interval[float64, right]') + >>> pd.interval_range(start=0, end=10, periods=3).mid + Float64Index([1.6666666666666667, 5.0, 8.333333333333334], dtype='float64') + """ return Index(self._data.mid, copy=False) @property def length(self) -> Index: + """ + Return interval's length. + + Return number index which contains all intervals' length value in Intervalindex's interval. + + Returns + ------- + Int64Index or Float64Index : depend on if the type of length value + + See Also + -------- + IntervalIndex : The structure of IntervalIndex. + + Examples + -------- + >>> pd.interval_range(start=0, end=5) + IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]], dtype='interval[int64, right]') + >>> pd.interval_range(start=0, end=5).length + Int64Index([1, 1, 1, 1, 1], dtype='int64') + """ return Index(self._data.length, copy=False) # -------------------------------------------------------------------- From 1ea94ec18981cf131769e8064c71e6962f8463bd Mon Sep 17 00:00:00 2001 From: j36426052 <63530107+j36426052@users.noreply.github.com> Date: Sat, 24 Feb 2024 13:25:46 +0800 Subject: [PATCH 2/5] Apply suggestions from code review Co-authored-by: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com> --- pandas/core/indexes/interval.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index 58c18f932a589..d95a87cf01dae 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -845,11 +845,10 @@ def left(self) -> Index: >>> pd.interval_range(start=0, end=5) IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]], dtype='interval[int64, right]') >>> pd.interval_range(start=0, end=5).left - Int64Index([0, 1, 2, 3, 4], dtype='int64') + Index([0, 1, 2, 3, 4], dtype='int64') """ return Index(self._data.left, copy=False) - @cache_readonly def right(self) -> Index: return Index(self._data.right, copy=False) @@ -874,7 +873,7 @@ def mid(self) -> Index: >>> pd.interval_range(start=0, end=10, periods=3) IntervalIndex([(0.0, 3.3333333333333335], (3.3333333333333335, 6.666666666666667], (6.666666666666667, 10.0]], dtype='interval[float64, right]') >>> pd.interval_range(start=0, end=10, periods=3).mid - Float64Index([1.6666666666666667, 5.0, 8.333333333333334], dtype='float64') + Index([1.6666666666666667, 5.0, 8.333333333333334], dtype='float64') """ return Index(self._data.mid, copy=False) @@ -898,7 +897,7 @@ def length(self) -> Index: >>> pd.interval_range(start=0, end=5) IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]], dtype='interval[int64, right]') >>> pd.interval_range(start=0, end=5).length - Int64Index([1, 1, 1, 1, 1], dtype='int64') + Index([1, 1, 1, 1, 1], dtype='int64') """ return Index(self._data.length, copy=False) From be8cc26ad42b112a361c45cdced5fb64fef3efa7 Mon Sep 17 00:00:00 2001 From: qsnake_wsl Date: Sat, 24 Feb 2024 13:36:18 +0800 Subject: [PATCH 3/5] remove some docstring in pandas/core/indexes which are too long. --- pandas/core/indexes/interval.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index d95a87cf01dae..169d4741ad7fd 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -830,7 +830,8 @@ def left(self) -> Index: """ Return intervals' left value. - Return number index which contains all intervals' left value in Intervalindex's interval. + Return number index which contains all intervals' left value + in Intervalindex's interval. Returns ------- @@ -843,7 +844,8 @@ def left(self) -> Index: Examples -------- >>> pd.interval_range(start=0, end=5) - IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]], dtype='interval[int64, right]') + IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]], + dtype='interval[int64, right]') >>> pd.interval_range(start=0, end=5).left Index([0, 1, 2, 3, 4], dtype='int64') """ @@ -871,7 +873,9 @@ def mid(self) -> Index: Examples -------- >>> pd.interval_range(start=0, end=10, periods=3) - IntervalIndex([(0.0, 3.3333333333333335], (3.3333333333333335, 6.666666666666667], (6.666666666666667, 10.0]], dtype='interval[float64, right]') + IntervalIndex([(0.0, 3.3333333333333335], (3.3333333333333335, + 6.666666666666667], (6.666666666666667, 10.0]], + dtype='interval[float64, right]') >>> pd.interval_range(start=0, end=10, periods=3).mid Index([1.6666666666666667, 5.0, 8.333333333333334], dtype='float64') """ @@ -882,7 +886,8 @@ def length(self) -> Index: """ Return interval's length. - Return number index which contains all intervals' length value in Intervalindex's interval. + Return number index which contains all intervals' length value + in Intervalindex's interval. Returns ------- @@ -895,7 +900,8 @@ def length(self) -> Index: Examples -------- >>> pd.interval_range(start=0, end=5) - IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]], dtype='interval[int64, right]') + IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]], + dtype='interval[int64, right]') >>> pd.interval_range(start=0, end=5).length Index([1, 1, 1, 1, 1], dtype='int64') """ From 33b42a837bcfb41b03be850f1969e24ab7319e0e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 24 Feb 2024 05:59:14 +0000 Subject: [PATCH 4/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pandas/core/indexes/interval.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index 169d4741ad7fd..ef25e8737fa51 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -873,8 +873,8 @@ def mid(self) -> Index: Examples -------- >>> pd.interval_range(start=0, end=10, periods=3) - IntervalIndex([(0.0, 3.3333333333333335], (3.3333333333333335, - 6.666666666666667], (6.666666666666667, 10.0]], + IntervalIndex([(0.0, 3.3333333333333335], (3.3333333333333335, + 6.666666666666667], (6.666666666666667, 10.0]], dtype='interval[float64, right]') >>> pd.interval_range(start=0, end=10, periods=3).mid Index([1.6666666666666667, 5.0, 8.333333333333334], dtype='float64') @@ -886,7 +886,7 @@ def length(self) -> Index: """ Return interval's length. - Return number index which contains all intervals' length value + Return number index which contains all intervals' length value in Intervalindex's interval. Returns From c32fa978ab6690ff3264ed179dd75db900a86c84 Mon Sep 17 00:00:00 2001 From: j36426052 <63530107+j36426052@users.noreply.github.com> Date: Mon, 4 Mar 2024 19:00:06 +0800 Subject: [PATCH 5/5] Apply suggestions from code review Co-authored-by: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com> --- pandas/core/indexes/interval.py | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index ef25e8737fa51..184503e83eaa6 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -830,12 +830,9 @@ def left(self) -> Index: """ Return intervals' left value. - Return number index which contains all intervals' left value - in Intervalindex's interval. - Returns ------- - Int64Index or Float64Index : depend on if the type of left value. + Index See Also -------- @@ -858,13 +855,11 @@ def right(self) -> Index: @cache_readonly def mid(self) -> Index: """ - Return the intervals' mean by Float64Index. - - Return Float64Index which contains all intervals' left and right value mean. + Return the midpoint of each interval. Returns ------- - Float64Index + Index See Also -------- @@ -884,14 +879,11 @@ def mid(self) -> Index: @property def length(self) -> Index: """ - Return interval's length. - - Return number index which contains all intervals' length value - in Intervalindex's interval. + Return the intervals' length. Returns ------- - Int64Index or Float64Index : depend on if the type of length value + Index See Also --------