Skip to main content
`Ctrl`+`K`

# pandas.DataFrame.clip

DataFrame.clip(lower=None, upper=None, *, axis=None, inplace=False, **kwargs)

  Trim values at input threshold(s).

  Assigns values outside boundary to boundary values. Thresholds can be singular values or array like, and in the latter case the clipping is performed element-wise in the specified axis.

  Parameters:
    lower float or array-like, default None

      Minimum threshold value. All values below this threshold will be set to it. A missing threshold (e.g NA) will not clip the value.

    upper float or array-like, default None

      Maximum threshold value. All values above this threshold will be set to it. A missing threshold (e.g NA) will not clip the value.

    axis{0 or ‘index’, 1 or ‘columns’, None}, default None

      Align object with lower and upper along the given axis. For Series this parameter is unused and defaults to None.

    inplace bool, default False

      Whether to perform the operation in place on the data.

    **kwargs

      For compatibility with NumPy. See NumPy compatibility kwargs for more.

  Returns:
    Series or DataFrame

      Same type as calling object with the values outside the clip boundaries replaced.

  See also

  `Series.clip`

    Trim values at input threshold in series.

  `DataFrame.clip`

    Trim values at input threshold in DataFrame.

  `numpy.clip`

    Clip (limit) the values in an array.

  Examples

      >>> data = {"col_0": [9, -3, 0, -1, 5], "col_1": [-2, -7, 6, 8, -5]}
      >>> df = pd.DataFrame(data)
      >>> df
         col_0  col_1
      0      9     -2
      1     -3     -7
      2      0      6
      3     -1      8
      4      5     -5

  Clips per column using lower and upper thresholds:

      >>> df.clip(-4, 6)
         col_0  col_1
      0      6     -2
      1     -3     -4
      2      0      6
      3     -1      6
      4      5     -4

  Clips using specific lower and upper thresholds per column:

      >>> df.clip([-2, -1], [4, 5])
          col_0  col_1
      0      4     -1
      1     -2     -1
      2      0      5
      3     -1      5
      4      4     -1

  Clips using specific lower and upper thresholds per column element:

      >>> t = pd.Series([2, -4, -1, 6, 3])
      >>> t
      0    2
      1   -4
      2   -1
      3    6
      4    3
      dtype: int64

      >>> df.clip(t, t + 4, axis=0)
         col_0  col_1
      0      6      2
      1     -3     -4
      2      0      3
      3      6      8
      4      5      3

  Clips using specific lower threshold per column element, with missing values:

      >>> t = pd.Series([2, -4, np.nan, 6, 3])
      >>> t
      0    2.0
      1   -4.0
      2    NaN
      3    6.0
      4    3.0
      dtype: float64

      >>> df.clip(t, axis=0)
      col_0  col_1
      0      9.0    2.0
      1     -3.0   -4.0
      2      0.0    6.0
      3      6.0    8.0
      4      5.0    3.0