[英]Pandas groupby weighted average
我有一个 DataFrame,我想按日期分组(我的 df 中的列中的"count_date"
),并对由计数( "count"
)加权的平均速度( "average_speed"
)应用加权平均值。
我正在尝试这个:
df_byday = df_merged.groupby("count_date").apply(lambda x: np.average(x['average_speed'], weights=x['count']))
但它返回 ZeroDivisionError,因为有些行的“count”和“average_speed”等于 0。
在 Numpy 文档中搜索时,我可以看到np.ma.average()
可以帮助解决问题。 但是当我尝试应用它时,出现以下错误:
/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/numpy/ma/extras.py:649: RuntimeWarning: invalid value encountered in double_scalars
avg = np.multiply(a, wgt,
任何人都可以帮助并让我知道在这种情况下如何处理 ZeroDivisionError 吗?
非常感谢!
您可以捕获ZeroDivisionError
异常
def func(x):
try:
return np.average(x['average_speed'], weights=x['count'])
except ZeroDivisionError:
return 0
df_byday = df_merged.groupby("count_date").apply(func)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.