Удалить группу после группировки в зависимости от наличия значения в столбце в группе - PullRequest
0 голосов
/ 22 февраля 2019

Вкл. 0.24.1, учитывая:

toy = pd.DataFrame({'g': [1,1,1,2,2,3,3], 'val': [0,2,3,4,5,6,0]})
toy
   g  val
0  1    0
1  1    2
2  1    3
3  2    4
4  2    5
5  3    6
6  3    0

Я хочу отбросить целые группы, где столбец v группы содержит ноль.Другими словами, после заклинания, которое предпочтительно должно включать inplace=True для сохранения моего конвейера преобразования данных, я хочу, чтобы toy было:

   g  val
3  2    4
4  2    5

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

Или вы также можете сделать:

toy[~toy.g.isin(toy.loc[toy.val.eq(0),'g'])]

   g  val
3  2    4
4  2    5
0 голосов
/ 22 февраля 2019

Это работает:

toy.loc[toy.groupby('g').transform(np.prod).query('val !=0').index, :]
0 голосов
/ 22 февраля 2019

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

toy.groupby('g').filter(lambda x : all(x['val']!=0))
Out[58]: 
   g  val
3  2    4
4  2    5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...