gpt4 book ai didi

python - Pandas/numpy 加权平均 ZeroDivisionError

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:02 25 4
gpt4 key购买 nike

创建一个 lambda 函数来计算加权平均值并将其发送到字典。

wm = lambda x: np.average(x, weights=df.loc[x.index, 'WEIGHTS'])

# Define a dictionary with the functions to apply for a given column:
f = {'DRESS_AMT': 'max',
'FACE_AMT': 'sum',
'Other_AMT': {'weighted_mean' : wm}}

# Groupby and aggregate with dictionary:
df2=df.groupby(['ID','COL1'], as_index=False).agg(f)

此代码有效,但如果权重加起来为 0 ZeroDivisionError,则加权平均 lambda 函数将失败。在这些情况下,我希望输出“Other_AMT”仅为 0。

我阅读了一篇关于使用 np.ma.average(屏蔽平均)的文档,但无法理解如何实现它

最佳答案

这还不够吗?

def wm(x):
try:
return np.average(x, weights=df.loc[x.index, 'WEIGHTS'])
except ZeroDivisionError:
return 0

f = {'DRESS_AMT': 'max',
'FACE_AMT': 'sum',
'Other_AMT': {'weighted_mean' : wm} }

df2=df.groupby(['ID','COL1'], as_index=False).agg(f)

关于python - Pandas/numpy 加权平均 ZeroDivisionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49864679/

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