Доступ к определенной группе в группе при работе с пандами - PullRequest
3 голосов
/ 13 апреля 2019
    A   B
0   1  12
1   1  13
2   1  15
3   2  16
4   2  19
5   2  20
6   3  32
7   3  29
8   3  25
9   4   3
10  4   5
11  4   7

У меня есть pandas dataframe, как показано выше. Я хочу сгруппировать столбец 'A' ​​по значениям, подобным 1 2 3 4, и вычесть значения столбца B всех групп из группы 4. Как я могу это сделать?

Мой результат должен выглядеть так:

    
A   B   C
1   12  9
1   13  8
1   15  8
2   16  13
2   19  14
2   20  13
3   32  29
3   29  24
3   25  18
4   3   0
4   5   0
4   7   0

1 Ответ

5 голосов
/ 13 апреля 2019

Вы можете использовать groupby и apply. Чтобы получить группу для A = 4, позвоните GroupBy.get_group(4).

g = df.groupby('A')
df['C'] = g.apply(lambda x: x['B'] - g.get_group(4)['B'].values).values
df

    A   B   C
0   1  12   9
1   1  13   8
2   1  15   8
3   2  16  13
4   2  19  14
5   2  20  13
6   3  32  29
7   3  29  24
8   3  25  18
9   4   3   0
10  4   5   0
11  4   7   0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...