【发布时间】:2020-08-09 16:19:52
【问题描述】:
我有一个 pandas 数据框,我想按集群计算 MEDIAN 绝对偏差。我假设 pandas 方法mad 是中值绝对偏差,但它似乎是平均绝对偏差。我写的代码行是
df['MAD PPGamp'] = df.groupby('Cluster')['PPGamp'].transform('mad')
我尝试自己编写一个小函数来计算中值绝对偏差
def myMAD(x):
med = np.median(x)
x = abs(x-med)
MAD = np.median(x)
return MAD
并将我的代码更改为阅读
df['MAD PPGamp'] = df.groupby('Cluster')['PPGamp'].transform('myMAD')
不幸的是,这不起作用。我得到一个 AttributeError 'SeriesGroupBy' 对象没有属性 'myMAD"。
如何按簇计算数据框中列的中值绝对偏差,并使用转换正确地跨行广播 MAD 创建新列?
提前致谢
托马斯·飞利浦
【问题讨论】:
-
我建议使用已经实现的 scipy.stats.median_absolute_deviation
标签: python-3.x pandas dataframe pandas-groupby