Skip to main content
`Ctrl`+`K`

# pandas.io.formats.style.Styler.hide

Styler.hide(subset=None, axis=0, level=None, names=False)

  Hide the entire index / column headers, or specific rows / columns from display.

  Added in version 1.4.0.

  Parameters:
    subset label, array-like, IndexSlice, optional

      A valid 1d input or single key along the axis within DataFrame.loc[<subset>, :] or DataFrame.loc[:, <subset>] depending upon `axis`, to limit `data` to select hidden rows / columns.

    axis{“index”, 0, “columns”, 1}

      Apply to the index or columns.

    level int, str, list

      The level(s) to hide in a MultiIndex if hiding the entire index / column headers. Cannot be used simultaneously with `subset`.

    names bool

      Whether to hide the level name(s) of the index / columns headers in the case it (or at least one the levels) remains visible.

  Returns:
    Styler

  Notes

  Warning

  This method only works with the output methods `to_html`, `to_string` and `to_latex`.

  Other output methods, including `to_excel`, ignore this hiding method and will display all data.

  This method has multiple functionality depending upon the combination of the `subset`, `level` and `names` arguments (see examples). The `axis` argument is used only to control whether the method is applied to row or column headers:

  Argument combinations
  `subset` | `level` | `names` | Effect
  --- | --- | --- | ---
  None | None | False | The axis-Index is hidden entirely.
  None | None | True | Only the axis-Index names are hidden.
  None | Int, Str, List | False | Specified axis-MultiIndex levels are hidden entirely.
  None | Int, Str, List | True | Specified axis-MultiIndex levels are hidden entirely and the names of remaining axis-MultiIndex levels.
  Subset | None | False | The specified data rows/columns are hidden, but the axis-Index itself, and names, remain unchanged.
  Subset | None | True | The specified data rows/columns and axis-Index names are hidden, but the axis-Index itself remains unchanged.
  Subset | Int, Str, List | Boolean | ValueError: cannot supply `subset` and `level` simultaneously.

  Note this method only hides the identified elements so can be chained to hide multiple elements in sequence.

  Examples

  Simple application hiding specific rows:

      >>> df = pd.DataFrame([[1,2], [3,4], [5,6]], index=["a", "b", "c"])
      >>> df.style.hide(["a", "b"])
           0    1
      c    5    6

  Hide the index and retain the data values:

      >>> midx = pd.MultiIndex.from_product([["x", "y"], ["a", "b", "c"]])
      >>> df = pd.DataFrame(np.random.randn(6,6), index=midx, columns=midx)
      >>> df.style.format("{:.1f}").hide()
                       x                    y
         a      b      c      a      b      c
       0.1    0.0    0.4    1.3    0.6   -1.4
       0.7    1.0    1.3    1.5   -0.0   -0.2
       1.4   -0.8    1.6   -0.2   -0.4   -0.3
       0.4    1.0   -0.2   -0.8   -1.2    1.1
      -0.6    1.2    1.8    1.9    0.3    0.3
       0.8    0.5   -0.3    1.2    2.2   -0.8

  Hide specific rows in a MultiIndex but retain the index:

      >>> df.style.format("{:.1f}").hide(subset=(slice(None), ["a", "c"]))
      ...
                               x                    y
                 a      b      c      a      b      c
      x   b    0.7    1.0    1.3    1.5   -0.0   -0.2
      y   b   -0.6    1.2    1.8    1.9    0.3    0.3

  Hide specific rows and the index through chaining:

      >>> df.style.format("{:.1f}").hide(subset=(slice(None), ["a", "c"])).hide()
      ...
                       x                    y
         a      b      c      a      b      c
       0.7    1.0    1.3    1.5   -0.0   -0.2
      -0.6    1.2    1.8    1.9    0.3    0.3

  Hide a specific level:

      >>> df.style.format("{:,.1f}").hide(level=1)
                           x                    y
             a      b      c      a      b      c
      x    0.1    0.0    0.4    1.3    0.6   -1.4
           0.7    1.0    1.3    1.5   -0.0   -0.2
           1.4   -0.8    1.6   -0.2   -0.4   -0.3
      y    0.4    1.0   -0.2   -0.8   -1.2    1.1
          -0.6    1.2    1.8    1.9    0.3    0.3
           0.8    0.5   -0.3    1.2    2.2   -0.8

  Hiding just the index level names:

      >>> df.index.names = ["lev0", "lev1"]
      >>> df.style.format("{:,.1f}").hide(names=True)
                               x                    y
                 a      b      c      a      b      c
      x   a    0.1    0.0    0.4    1.3    0.6   -1.4
          b    0.7    1.0    1.3    1.5   -0.0   -0.2
          c    1.4   -0.8    1.6   -0.2   -0.4   -0.3
      y   a    0.4    1.0   -0.2   -0.8   -1.2    1.1
          b   -0.6    1.2    1.8    1.9    0.3    0.3
          c    0.8    0.5   -0.3    1.2    2.2   -0.8

  Examples all produce equivalently transposed effects with `axis="columns"`.