Skip to main content
`Ctrl`+`K`

# pandas.DataFrame.explode

DataFrame.explode(column, ignore_index=False)

  Transform each element of a list-like to a row, replicating index values.

  Parameters:
    column IndexLabel

      Column(s) to explode. For multiple columns, specify a non-empty list with each element be str or tuple, and all specified columns their list-like data on same row of the frame must have matching length.

      Added in version 1.3.0: Multi-column explode

    ignore_index bool, default False

      If True, the resulting index will be labeled 0, 1, …, n - 1.

  Returns:
    DataFrame

      Exploded lists to rows of the subset columns; index will be duplicated for these rows.

  Raises:
    ValueError

      - If columns of the frame are not unique.

      - If specified columns to explode is empty list.

      - If specified columns to explode have not matching count of elements rowwise in the frame.

  See also

  `DataFrame.unstack`

    Pivot a level of the (necessarily hierarchical) index labels.

  `DataFrame.melt`

    Unpivot a DataFrame from wide format to long format.

  `Series.explode`

    Explode a DataFrame from list-like columns to long format.

  Notes

  This routine will explode list-likes including lists, tuples, sets, Series, and np.ndarray. The result dtype of the subset rows will be object. Scalars will be returned unchanged, and empty list-likes will result in a np.nan for that row. In addition, the ordering of rows in the output will be non-deterministic when exploding sets.

  Reference the user guide for more examples.

  Examples

      >>> df = pd.DataFrame({'A': [[0, 1, 2], 'foo', [], [3, 4]],
      ...                    'B': 1,
      ...                    'C': [['a', 'b', 'c'], np.nan, [], ['d', 'e']]})
      >>> df
                 A  B          C
      0  [0, 1, 2]  1  [a, b, c]
      1        foo  1        NaN
      2         []  1         []
      3     [3, 4]  1     [d, e]

  Single-column explode.

      >>> df.explode('A')
           A  B          C
      0    0  1  [a, b, c]
      0    1  1  [a, b, c]
      0    2  1  [a, b, c]
      1  foo  1        NaN
      2  NaN  1         []
      3    3  1     [d, e]
      3    4  1     [d, e]

  Multi-column explode.

      >>> df.explode(list('AC'))
           A  B    C
      0    0  1    a
      0    1  1    b
      0    2  1    c
      1  foo  1  NaN
      2  NaN  1  NaN
      3    3  1    d
      3    4  1    e