gpt4 book ai didi

python - 根据多列从 Pandas 数据框中删除行

转载 作者:太空宇宙 更新时间:2023-11-04 11:06:39 24 4
gpt4 key购买 nike

我想从 Pandas 数据框中删除一半或更多的“rois”行的任何列 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有3行中的2行其中 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:

s = (data.set_index('roi')    # filter `roi` out of later comparison
.lt(50).any(1) # check > 50 on all columns
.groupby('roi') # groupby
.transform('mean') # compute the mean
.lt(0.5) # make sure mean > 0.5
.values
)

data[s]

输出:

   roi   s  b1  b2
3 5 60 40 60
4 5 60 60 60
5 5 60 60 60

关于python - 根据多列从 Pandas 数据框中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59279959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com