DataFrame.explode() / Series.explode()

Метод explode() превращает каждый элемент списка/массива/Series, лежащий в ячейке, в отдельную строку. Индекс при этом дублируется. Удобен при чтении полей-списков из JSON или массивов измерений.

Сигнатура

DataFrame.explode(column, ignore_index=False)
Series.explode(ignore_index=False)

Параметры

  • column — имя столбца (или список столбцов одинаковой длины) для разворачивания.

  • ignore_index — если True, индекс перенумеровывается.

Возвращаемое значение

Объект того же типа с развернутыми списками.

Примеры

Пример 1. Series со списками

import pandas as pd

s = pd.Series([[1, 2, 3], [4, 5]])
print(s.explode())
0    1
0    2
0    3
1    4
1    5
dtype: object

Пример 2. DataFrame: лог пачек измерений

Arduino отправил список значений за тик:

import pandas as pd

df = pd.DataFrame({
    "tick":     [1, 2],
    "readings": [[22.1, 22.2, 22.3], [22.5, 22.6]],
})
print(df.explode("readings"))
   tick readings
0     1     22.1
0     1     22.2
0     1     22.3
1     2     22.5
1     2     22.6

Пример 3. С ignore_index

import pandas as pd

df = pd.DataFrame({"a": [[1, 2], [3, 4]]})
print(df.explode("a", ignore_index=True))
   a
0  1
1  2
2  3
3  4

Пример 4. Несколько столбцов одинаковой длины

import pandas as pd

df = pd.DataFrame({
    "x": [[1, 2], [3, 4]],
    "y": [["a", "b"], ["c", "d"]],
})
print(df.explode(["x", "y"], ignore_index=True))
   x  y
0  1  a
1  2  b
2  3  c
3  4  d

Пример 5. Пустые списки и скаляры

import pandas as pd

s = pd.Series([[1, 2], [], "abc"])
print(s.explode())
0      1
0      2
1    NaN
2    abc
dtype: object

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.