import pandas as pd
df = pd.DataFrame({
'order_id': [1, 2],
'items': [['book','pen'], ['cup']]
})
df.explode('items')
Результат:
order_id items 0 1 book 0 1 pen 1 2 cup
df.explode('items', ignore_index=True)
Результат:
order_id items 0 1 book 1 1 pen 2 2 cup
df2 = pd.DataFrame({
'order_id': [1],
'items': [['book','pen']],
'qty': [[1, 3]]
})
df2.explode(['items','qty'])
Результат:
order_id items qty 0 1 book 1 0 1 pen 3Порешать Python-задачи в тренажёре →
Всплывает в задачах на нормализацию «многозначных» полей (списки, теги), часто вместе со str.split и последующим groupby или value_counts.
Пустой список [] и NaN превращаются в одну строку со значением NaN в целевой колонке — строки не пропадают. Если такие строки не нужны, отфильтруйте результат через dropna по этой колонке после explode.
Да, с pandas 1.3+ передайте список: df.explode(['items','qty']). Но списки в этих колонках должны быть одинаковой длины в каждой строке, иначе метод бросит ValueError о несовпадении длин.
Часто перед explode делают str.split(',') чтобы получить списки из строки с разделителями, а затем разворачивают их в строки. Это типичный способ нормализовать поля-перечисления (теги, категории) в длинный формат для дальнейшей агрегации.
Pandas: основы · Pandas groupby
groupby · merge · pivot_table · apply · value_counts · drop_duplicates
Открыть Python-тренажёр (556 задач) →