Разделяем значения в строке DataFrame: метод split в Pandas

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для того чтобы быстро разделить колонку со значениями CSV на несколько строк в Pandas, используйте метод pd.Series.explode(). Исходя из DataFrame df с колонкой 'Values', разделите строки на списки с помощью метода .str.split(',') и затем примените .explode():

Python
Скопировать код
df['Values'] = df['Values'].str.split(',')
df = df.explode('Values')
# В результате ваш DataFrame получит больше строк — как у фермера кукурузы!

Таким образом, из данных:

   Values
0  a,b,c
1  d,e,f

Мы получаем отдельные строки:

  Values
0      a
0      b
0      c
1      d
1      e
1      f

Для применения этого метода требуется версия Pandas 0.25.0 или более новая, для разделения множества столбцов — Pandas 1.3.0. Если ваша версия Pandas старая, придется немного повоевать с кодом.

Кинга Идем в IT: пошаговый план для смены профессии

Более глубокое погружение: продвинутые приемы и предостережения

От единичного к множеству: разделение по нескольким столбцам

Начиная с версии 1.3.0, Pandas предоставляет возможность разбивать данные по нескольким столбцам одновременно:

Python
Скопировать код
df = df.explode(['Column1', 'Column2'])
# Так Pandas переходит от разделения по одному столбцу к множественному.

Работаем осторожно с нестроковыми столбцами

Наитрепетнее обращайтесь с нестроковыми данными. Не допускайте непродуманных преобразований при разделении:

Python
Скопировать код
df['NonStringCol'] = df['NonStringCol'].astype(original_dtype)
# Иногда нужно сохранить верность pandas.

Поиск скорости: эффективность превыше всего

При работе с большими объемами данных начните оценивать производительность, используя %timeit, и выявляйте наиболее эффективные методы:

Python
Скопировать код
%timeit myDataFrame.explode('Values')
# Ледники движутся быстрее, чем некоторые функции!

Использование stack и concat для перестроения структуры

Для модификации структуры датафрейма можно использовать упаковку и склеивание — альтернативные подходы преобразования данных:

Python
Скопировать код
split_df = (df.set_index(['Fixed1', 'Fixed2'])
              .apply(lambda x: x.str.split(',').explode())
              .reset_index())
# Вуаля! Данные преобразованы в нужную форму.

iterrows не лучший друг для больших объемов

iterrows может показаться привлекательным решением, но велика вероятность попасть в ловушку. В Pandas рекомендуют избегать этого метода при обработке крупных массивов данных. В случае трудного выбора отдавайте предпочтение векторизации.

Визуализация

Продемонстрируем на примере коробки, в которой записано: 'яблоки, апельсины, бананы, виноград, персики'.

Применяем df.explode('column')

И получаем каждый фрукт в отдельном ящике, превратившийся в строку:

📦🍎 📦🍊 📦🍌 📦🍇 📦🍑

Обращение с данными как профессионал

Идеальная чистота данных после применения explode

В идеальном DataFrame каждый столбец — переменная, каждая строка — наблюдение. Обеспечьте сохранение порядка после применения explode:

Python
Скопировать код
df.rename(columns={new_col_name: 'Original_Col_Name'}).sort_index(axis=1)
# Поддержание порядка и чистоты — залог успешного анализа.

Поиск новых инструментов: использование tidy_split

Функции сторонних библиотек, как например tidy_split, помогут вам сохранить порядок столбцов и эффективно обрабатывать пропущенные значения.

Выбор подходящего инструмента

Проведите исследование и выберите инструмент, наиболее подходящий для решения вашей задачи с учетом структуры и размера данных, а также версии Pandas.

Полезные материалы

  1. pandas.DataFrame.explode — документация pandas 2.2.0 — Официальная документация метода explode.
  2. Как "развернуть" колонку в pandas DataFrame в множество строк – Stack Overflow — Разнообразные подходы от сообщества разработчиков.
  3. Использование pandas и Python для анализа вашего набора данных – Real Python — Практический гид.
  4. Изучение датасетов с использованием pandas — Углубленное знакомство с анализом данных.
  5. Руководство Криса Элбона — символирует концепции раскладки, применения и объединения в контексте обработки данных.
  6. Medium: Преобразование списка в DataFrame — Детальный обзор метода.