Как сгруппировать по двум столбцам панды - PullRequest
0 голосов
/ 09 мая 2018

У меня есть 3 столбца - _a, _b, _c.

import numpy as np 
import pandas as pd
df = pd.DataFrame({'_a':[1,1,1,2,2,3,3],'_b':[3,3,5,3,7,3,9], '_c':[10,11,12,13,14,15,16], 'a_b_3:[21,21,21,13,13,15,15]'})
df

    _a  _b  _c  a_b_3   
0   1   3   10   21
1   1   3   11   21
2   1   5   12   21
3   2   3   13   13
4   2   7   14   13
5   3   3   15   15
6   3   9   16   15

Мне нужно создать столбец a_b_3 (сумма всех значений _c для _b = 3 по _a) использовать groupby из панд. Заранее спасибо.

1 Ответ

0 голосов
/ 09 мая 2018

Использование:

df['a_b_3'] = df['_a'].map(df[df['_b'] == 3].groupby('_a')['_c'].sum())

Выход:

   _a  _b  _c  a_b_3
0   1   3  10     21
1   1   3  11     21
2   1   5  12     21
3   2   3  13     13
4   2   7  14     13
5   3   3  15     15
6   3   9  16     15

Объяснение

Сначала отфильтруйте только записи, у которых _b равно 3, затем сгруппируйте по _a и суммируйте, чтобы создать серию. Используйте эту серию для сопоставления со значениями _a в исходном фрейме данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...