我有一个数据帧:
Type Name Cost
A X 545
B Y 789
C Z 477
D X 640
C X 435
B Z 335
A X 850
B Y 152
我的数据框中有所有这样的组合,类型为[‘A’,’B’,’C’,’D’]和名称[‘X’,’Y’,’Z’].我使用groupby方法获取特定组合的统计数据,如A-X,A-Y,A-Z.这是一些代码:
df = pd.DataFrame({'Type':['A','B','C','D','C','B','A','B'] ,'Name':['X','Y','Z','X','X','Z','X','Y'], 'Cost':[545,789,477,640,435,335,850,152]})
df.groupby(['Name','Type']).agg([mean,std])
#need to use mad instead of std
我需要消除超过3 MAD的观察结果;就像是:
test = df[np.abs(df.Cost-df.Cost.mean())<=(3*df.Cost.mad())]
我对此感到困惑,因为df.Cost.mad()返回整个数据上的Cost的MAD而不是特定的Type-Name类别.我怎么能把两者结合起来?