从pandas数据帧中,我想删除“roi”,其中有一半或更多 对于任何列s、b1或b2,行的值都小于50。你知道吗
以下是数据帧示例:
roi s b1 b2
4 40 60 70
4 60 40 80
4 80 70 60
5 60 40 60
5 60 60 60
5 60 60 60
应该只剩下与roi 5对应的三行(roi 4有三行中的两行) 其中s、b1、b2的至少一个值低于50)。你知道吗
我已经实现了这一点,但不知道是否有一个较短的(即更快和更快的) 清洁剂)方法:
for roi in data.roi.unique():
subdata = data[data['roi']==roi];
subdatas = subdata[subdata['s']>=50];
subdatab1 = subdatas[subdatas['b1']>=50];
subdatab2 = subdatab1[subdatab1['b2']>=50]
if((subdatab2.size/10)/(subdata.size/10) < 0.5):
data = data[data['roi']!=roi];
可以同时使用多个筛选条件,以避免创建中间数据帧(空间复杂度效率),例如:
你可以做
transform
:输出:
相关问题 更多 >
编程相关推荐