猿问

根据组中列中值的存在,在 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  2    5


郎朗坤
浏览 220回答 3
3回答

HUX布斯

使用 filtertoy.groupby('g').filter(lambda x : all(x['val']!=0))Out[58]:    g  val3  2    44  2    5

沧海一幻觉

或者你也可以这样做:toy[~toy.g.isin(toy.loc[toy.val.eq(0),'g'])]   g  val3  2    44  2    5

不负相思意

这有效:toy.loc[toy.groupby('g').transform(np.prod).query('val !=0').index, :]
随时随地看视频慕课网APP

相关分类

Python
我要回答