В процессе работы с данными, хранящимися в pandas DataFrame, часто возникает задача группировки данных по определенному признаку. Особенно интересным становится вопрос, когда необходимо получить результаты группировки в виде списков.
Рассмотрим типичную ситуацию. Пусть имеется DataFrame следующего вида:
x y
1 a
1 b
2 c
2 c
2 d
3 e
Требуется сгруппировать данные по столбцу ‘x’ и получить значения столбца ‘y’ в виде списка для каждого уникального значения ‘x’. То есть, в итоге хотелось бы получить следующий результат:
1 [a, b]
2 [c, c, d]
3 [e]
Для решения этой задачи можно использовать метод groupby()
библиотеки pandas. Этот метод позволяет группировать данные по одному или нескольким столбцам.
Решение задачи с использованием groupby()
выглядит следующим образом:
result = df.groupby('x')['y'].apply(list)
В этой строке кода происходит следующее:
df.groupby('x')
группирует данные по столбцу ‘x’;['y'].apply(list)
берет значения столбца ‘y’ для каждой группы и преобразует их в список.
Таким образом, с помощью одной строки кода можно достичь желаемого результата.
Однако стоит отметить, что результат выполнения этой операции — это объект Series, а не DataFrame. Если нужно получить результат в виде DataFrame, то можно использовать метод reset_index()
, который преобразует индексы в столбец DataFrame:
result = df.groupby('x')['y'].apply(list).reset_index()
Теперь результат выполнения этой операции — это DataFrame с двумя столбцами: ‘x’ и ‘y’, где ‘y’ содержит списки значений.
Таким образом, с помощью метода groupby()
и функции apply()
можно легко группировать данные в DataFrame по определенному признаку и получать результаты группировки в виде списков.
Добавить комментарий