gpt4 book ai didi

python-3.x - 在 Pandas `transform()` 中使用自定义函数(中值绝对偏差)

转载 作者:行者123 更新时间:2023-12-04 12:59:09 26 4
gpt4 key购买 nike

我有一个 Pandas 数据框,我想按集群计算 MEDIAN Absolute Deviation。我假设 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 来创建新列?

提前致谢

托马斯·菲利普斯

最佳答案

你很近,需要myMAD相反 'myMAD'因为您的自定义功能:

df['MAD PPGamp'] = df.groupby('Cluster')['PPGamp'].transform(myMAD)

编辑:

您的解决方案无需辅助列即可按列分组 df['Cluster'] :
s1 = df.groupby('Cluster')['PPGamp'].transform('median')
s2 = df['PPGamp'].sub(s1).abs()

df['MAD PPGamp'] = s2.groupby(df['Cluster']).transform('median')

关于python-3.x - 在 Pandas `transform()` 中使用自定义函数(中值绝对偏差),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61436389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com