微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas:选择groupby.sum()满足条件的行

在pandas中我有一个表格的数据框:

>>> import pandas as pd  
>>> df = pd.DataFrame({'ID':[51,51,51,24,24,24,31], 'x':[0,1,0,0,1,1,0]})
>>> df

ID   x
51   0
51   1
51   0
24   0
24   1
24   1
31   0

对于每个’ID’,’x’的值被记录多次,它是0或1.我想从df中选择那些包含’ID’的行,其中’x’至少为1的两倍.

对于每个’ID’,我设法计算’x’为1的次数

>>> df.groupby('ID')['x'].sum()

ID
51    1
24    2
31    0

但我不知道如何从这里开始.我想要以下输出

ID   x
24   0
24   1
24   1

解决方法:

使用groupby和filter

df.groupby('ID').filter(lambda s: s.x.sum()>=2)

输出

   ID  x
3  24  0
4  24  1
5  24  1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐