繁体   English   中英

Pandas groupby 加权平均

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM