You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按日期分组计算DataFrame加权平均值并存入新数据集

实现方案

按日维度计算Population加权的QTY平均值,核心计算逻辑为:单日加权平均QTY = 当日所有QTY * Population的乘积和 / 当日Population总和。
推荐使用向量化分组聚合实现,性能远高于逐组遍历的写法,代码如下:

# 计算每日加权平均QTY
df_avg = (
    # 先构造单条数据的加权项
    df.assign(qty_weighted = df["QTY"] * df["Population"])
    # 按日期分组聚合
    .groupby("Date", as_index=False)
    .agg(
        total_weighted = ("qty_weighted", "sum"),
        total_pop = ("Population", "sum")
    )
    # 计算最终加权值,并重命名为要求的字段名
    .assign(**{"WEIGHTED QTY": lambda x: x["total_weighted"] / x["total_pop"]})
    # 只保留需要的两个字段
    [["Date", "WEIGHTED QTY"]]
)

结果校验

用给出的样本数据计算,得到的结果为:

DateWEIGHTED QTY
2021-01-01≈8854.09
2021-01-02≈8841.77

注意事项

  • 如果数据集存在Population为0的记录,建议在分组前增加过滤逻辑.query("Population > 0"),避免触发除零错误
  • 该写法为纯向量化运算,在百万级以上数据量场景下的计算速度明显优于groupby.apply自定义函数的实现方式

内容的提问来源于stack exchange,提问作者RafaelP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 03:06:42