classes money mask
student
6 psp -26.23 adj|psp # keep
6 tnt 0.00 adj|psp
6 nvm -87.42 adj|psp
6 alw 0.00 adj|psp
6 tnt -14.87 adj|psp
6 adj 9.55 adj|psp # keep
6 psp -18.56 adj|psp # keep
6 wzi -17.41 adj|psp
6 nvm 65.97 adj|psp
6 psp 27.41 adj|psp # keep
89 alw -180.33 alw # keep
89 alw -869.44 alw # keep
89 tnt -95.66 alw
89 wzi -35.43 alw
89 nvm -144.90 alw
89 alw 180.23 alw # keep
89 tnt 35.43 alw
105 tnt -24.01 tnt # keep
105 wzi 213.13 tnt
105 ins -26.06 tnt
105 tnt 60.81 tnt # keep
我想过滤这个数据框,以便我只有每个帐户对应于掩码的行。例如,对于学生 6,我只想要具有“adj”或“psp”类的行。
我试图做 .isin() 但我使用的列表不断变化,所以关于如何最有效地做到这一点的任何想法?
最后,我希望得到这些类的总和,并标记大于零的类。如果可能的话,我想把下面的循环变成更有效的东西。谢谢!
bad_list = []
for i in test.index.unique():
df_ = test.loc[i]
mask_class = df_["mask"].str.split("|")
mask_class = mask_class.iloc[0]
df_mask = df_[df_['classes'].isin(mask_class)]
if(sum(df_mask["money"])>0):
bad_list.append(i)
```