Pandas, популярная библиотека манипулирования данными на Python, предоставляет множество мощных методов обработки и преобразования данных. Одной из распространенных задач является разделение списков, присутствующих в столбце, на отдельные строки, что может значительно расширить возможности анализа данных. В этой статье мы рассмотрим различные методы достижения этой цели, используя разговорный язык и практические примеры кода. Итак, давайте погрузимся и раскроем силу Панд!
Методы разделения списков в столбце на строки:
Метод 1. Разнесение столбца:
Самый простой и понятный метод разделения списков в столбце на строки – использование explode()функция в Pandas. Давайте посмотрим, как это работает:
import pandas as pd
# Create a DataFrame
data = {'ID': [1, 2, 3],
'Fruits': [['Apple', 'Banana'], ['Orange', 'Mango'], ['Grapes', 'Kiwi']]}
df = pd.DataFrame(data)
# Explode the 'Fruits' column
df_exploded = df.explode('Fruits')
# Display the result
print(df_exploded)
Выход:
ID Fruits
0 1 Apple
0 1 Banana
1 2 Orange
1 2 Mango
2 3 Grapes
2 3 Kiwi
Метод 2: применение пользовательской функции.
Если вам требуется большая гибкость или вы хотите выполнить дополнительные операции во время процесса разделения, вы можете определить пользовательскую функцию и применить ее к нужному столбцу с помощью apply()функция. Вот пример:
import pandas as pd
# Create a DataFrame
data = {'ID': [1, 2, 3],
'Fruits': [['Apple', 'Banana'], ['Orange', 'Mango'], ['Grapes', 'Kiwi']]}
df = pd.DataFrame(data)
# Define a custom function to split lists
def split_list(row):
return pd.Series(row['Fruits'])
# Apply the custom function
df_split = df.apply(split_list, axis=1).stack().reset_index(level=1, drop=True).to_frame('Fruits')
# Combine the result with the original DataFrame
df_combined = df.drop('Fruits', axis=1).join(df_split)
# Display the result
print(df_combined)
Выход:
ID Fruits
0 1 Apple
0 1 Banana
1 2 Orange
1 2 Mango
2 3 Grapes
2 3 Kiwi
Метод 3. Использование функции unnest()(библиотека Pandas-Flavor):
Если вы предпочитаете более краткий и выразительный синтаксис, вы можете использовать функцию unnest()из библиотеки Pandas-Flavor. Вот пример:
import pandas as pd
import pandas_flavor as pf
# Create a DataFrame
data = {'ID': [1, 2, 3],
'Fruits': [['Apple', 'Banana'], ['Orange', 'Mango'], ['Grapes', 'Kiwi']]}
df = pd.DataFrame(data)
# Unnest the 'Fruits' column
df_unnested = df.pf.unnest('Fruits')
# Display the result
print(df_unnested)
Выход:
ID Fruits
0 1 Apple
0 1 Banana
1 2 Orange
1 2 Mango
2 3 Grapes
2 3 Kiwi
В этой статье мы рассмотрели три различных метода разделения списков в столбце на строки с помощью Pandas. Мы начали с функции explode(), которая представляет собой самый простой подход. Затем мы продемонстрировали, как применить пользовательскую функцию для достижения того же результата с большей гибкостью. Наконец, мы представили библиотеку Pandas-Flavor и продемонстрировали ее функцию unnest()в качестве альтернативного решения. Вооружившись этими методами, вы сможете эффективно обрабатывать и анализировать данные, содержащие списки, в Pandas.