python按组执行操作

2024-09-27 00:18:01 发布

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

我有13个不同品牌(xx、yy、zz等)的数据框,每个品牌都有365行(品牌的观察值为整整一年)。这就是结果测向头(). 你知道吗

           brand  exMarketplaces  incMarketplaces  availabilityRate    
date                                                                                                             
2015-08-01    xx      54372.8601     65826.384700          0.260209        
2015-08-02    xx      74335.6785     89722.492300          0.255547      
2015-08-03    xx      78563.0134    110132.200751          0.262365      
2015-08-04    xx      84414.0774    104982.190444          0.261942      
2015-08-05    xx      70499.8071     87368.524093          0.263748   

我试图根据exMarketplaces列在组级别上删除异常值。下面的代码对整个数据帧执行此操作(不考虑品牌)。你知道吗

df_clean = df[np.abs(df.exMarketplaces-df.exMarketplaces.mean())<=(3*df.exMarketplaces.std())]

不过,我想在品牌层面上完成这个操作。因此,实际上,这个操作应该为13个品牌中的每一个运行13次,结果将是一个dataframe对象,并删除所有异常值。你知道吗

有人能提出一个办法吗?我有直觉认为这是一件很简单的事情,我在这里错过了一个技巧。你知道吗

提前谢谢。你知道吗


Tags: 数据代码cleandfdatenp级别品牌
1条回答
网友
1楼 · 发布于 2024-09-27 00:18:01

执行Groupbyw.r.tbrand列,并使用apply在感兴趣的列上运行函数,最后获取数据帧的过滤子集,如图所示:

func = lambda x: (np.abs(x-x.mean()) <= 3*x.std())
df_clean = df[df.groupby('brand')['exMarketplaces'].apply(func)]

相关问题 更多 >

    热门问题