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.