Добавить столбец в DataFrame GroupBy с помощью Pandas Transform
При работе с операциями группировки в pandas часто бывает полезно добавить новый столбец в результирующий фрейм данных. Один из способов добиться этого — использовать функцию .map(), как показано в примере. Однако альтернативный и более простой подход — использовать функцию .transform().
.transform() позволяет нам применять функцию к каждой группе в кадре данных и возвращать серию с результатами. Возвращаемая серия будет иметь индекс, совмещенный с исходным фреймом данных.
Для иллюстрации давайте начнем с предоставленного фрейма данных:
df = pd.DataFrame({'c': [1, 1, 1, 2, 2, 2, 2], 'type': ['m', 'n', 'o', 'm', 'm', 'n', 'n']})
Наша цель — посчитать значения типа для каждого c и добавить столбец размером c.
g = df.groupby('c')['type'].value_counts().reset_index(name='t')
Этот код подсчитывает значения для каждой группы и создает новый столбец с именем t.
Чтобы добавить столбец размера с помощью .transform(), мы можем выполните следующие действия:
g['size'] = df.groupby('c')['type'].transform('size')
.transform('size') применяет функцию размера к каждой группе, которая возвращает размер каждой группы. Полученная серия выравнивается по индексу исходного фрейма данных, что позволяет нам добавить ее в качестве нового столбца в g.
Выходными данными будет фрейм данных с дополнительным столбцом с именем size:
c type t size 0 1 m 1 3 1 1 n 1 3 2 1 o 1 3 3 2 m 2 4 4 2 n 2 4
Использование .transform() обеспечивает более краткий и простой способ добавить столбец обратно в исходный фрейм данных из агрегирования по группам.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3