Python 根据组中列中是否存在值,在groupby之后删除组

Python 根据组中列中是否存在值,在groupby之后删除组,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,在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

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

使用
过滤器

toy.groupby('g').filter(lambda x : all(x['val']!=0))
Out[58]: 
   g  val
3  2    4
4  2    5
或者,您也可以执行以下操作:

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

   g  val
3  2    4
4  2    5
这项工作:

toy.loc[toy.groupby('g').transform(np.prod).query('val !=0').index, :]