pandas.DataFrame.explode#

DataFrame.explode(столбец, ignore_index=False)[источник]#

Преобразование каждого элемента списко-подобного объекта в строку с репликацией значений индекса.

Параметры:
столбецIndexLabel

Столбец(цы) для развёртывания. Для нескольких столбцов укажите непустой список, где каждый элемент должен быть str или tuple, и все указанные столбцы с их данными в виде списка в той же строке фрейма должны иметь совпадающую длину.

Добавлено в версии 1.3.0: Multi-column explode

ignore_indexbool, по умолчанию False

Если True, результирующий индекс будет помечен как 0, 1, …, n - 1.

Возвращает:
DataFrame

Развёрнутые списки в строки подмножества столбцов; индекс будет дублироваться для этих строк.

Вызывает:
ValueError
  • Если столбцы фрейма не уникальны.

  • Если указанный список столбцов для развертывания пуст.

  • Если указанные столбцы для развертывания не имеют соответствующего количества элементов по строкам во фрейме.

Смотрите также

DataFrame.unstack

Свод уровня (обязательно иерархических) меток индекса.

DataFrame.melt

Преобразовать DataFrame из широкого формата в длинный формат.

Series.explode

Развернуть DataFrame из столбцов, подобных спискам, в длинный формат.

Примечания

Эта процедура развернёт списко-подобные объекты, включая списки, кортежи, множества, Series и np.ndarray. Тип данных результирующих строк подмножества будет object. Скаляры останутся неизменными, а пустые списко-подобные объекты приведут к np.nan для этой строки. Кроме того, порядок строк в выводе будет недетерминированным при разворачивании множеств.

Ссылка руководство пользователя для дополнительных примеров.

Примеры

>>> 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]

Взрыв одного столбца.

>>> 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]

Взрыв по нескольким столбцам.

>>> 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