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, :]