为了账号安全,请及时绑定邮箱和手机立即绑定

根据组中列中值的存在,在 groupby 之后删除一个组

根据组中列中值的存在,在 groupby 之后删除一个组

郎朗坤 2021-11-16 10:57:42
在0.24.1,给定:toy = pd.DataFrame({'g': [1,1,1,2,2,3,3], 'val': [0,2,3,4,5,6,0]})toy   g  val0  1    01  1    22  1    33  2    44  2    55  3    66  3    0我想删除组v列包含零的整个组。换句话说,在咒语之后,最好涉及inplace=True保存我的数据转换管道,我想toy成为:   g  val3  2    44  2    5
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

使用 filter


toy.groupby('g').filter(lambda x : all(x['val']!=0))

Out[58]: 

   g  val

3  2    4

4  2    5


查看完整回答
反对 回复 2021-11-16
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

或者你也可以这样做:


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


   g  val

3  2    4

4  2    5


查看完整回答
反对 回复 2021-11-16
?
不负相思意

TA贡献1777条经验 获得超10个赞

这有效:

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


查看完整回答
反对 回复 2021-11-16
  • 3 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信