如何在使用groupby()时忽略数据帧中具有唯一索引的几行?

2024-10-02 18:14:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧df

ID  Height
A   168
A   170
A   190
A   159
B   172
B   173
C   185

我试图分别使用以下方法从每个ID中消除df中的异常值:

outliersfree = df[df.groupby("ID")['Height'].transform(lambda x : x < (x.quantile(0.95) + 5*(x.quantile(0.95) - x.quantile(0.05)))).eq(1)]

在这里,我想忽略具有唯一索引的行。i、 例如,其中只有一个对应项的所有ID。例如,在给定的df中,C索引只有一个条目。因此,我希望在消除异常值的同时忽略C,并将outliersfree形成的新数据帧原样呈现出来

我还想知道如何忽略/跳过有两个条目的ID(例如,df中的B


Tags: 数据方法lambda目的iddftransform条目
1条回答
网友
1楼 · 发布于 2024-10-02 18:14:10

一个选项是在lambda函数中创建OR条件,这样,如果组中有一个元素,则返回True

df.groupby("ID")['Height'].transform(lambda x : (x.count() == 1) | 
                                                (x < (x.quantile(0.95) + 5*
                                                (x.quantile(0.95) - x.quantile(0.05)))))

您可以使用(x.count() < 3)来表示两个或两个以下的组

相关问题 更多 >