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

按两列分组聚合并存储结果至DataFrame的最优方法

按两列分组聚合并存储结果到DataFrame的最优方案

嘿,针对你这个要计算每个merk下各kleur对应的prijs平均值的需求,最推荐也是最高效的方式就是用pandas原生的groupby结合聚合方法——毕竟它专门针对大型数据集做了底层优化,不管是速度还是内存效率都比手动循环这类方法强太多。

核心实现代码

假设你的原始DataFrame名为df,一行代码就能搞定:

import pandas as pd

# 分组计算均值并转为标准DataFrame
occasions_prijs_df_gr = df.groupby(['merk', 'kleur'])['prijs'].mean().reset_index()

或者你也可以直接在groupby里设置as_index=False,省去后续的reset_index()步骤,代码更简洁:

occasions_prijs_df_gr = df.groupby(['merk', 'kleur'], as_index=False)['prijs'].mean()

为什么这是最优方案?

  • 效率拉满:pandas的groupby是C语言级别的底层实现,处理大型数据集时比Python层面的循环快几十甚至上百倍,内存占用也更合理。
  • 灵活性强:如果之后需要扩展计算其他统计量(比如计数、总和),只需要修改聚合逻辑就行,比如:
    # 同时计算均值和数量
    result = df.groupby(['merk', 'kleur'], as_index=False)['prijs'].agg(
        gemiddelde_prijs='mean',
        aantal_voertuigen='count'
    )
    
  • 结果格式友好:通过reset_index()或者as_index=False,最终得到的是结构清晰的标准DataFrame,完全符合你预期的输出格式。

示例验证

假设你的原始数据是这样的:

kleurmerkprijs
roodFord20000
blauwFord22000
roodFord19000
blauwBMW35000
roodBMW32000

运行核心代码后,occasions_prijs_df_gr的输出会是:

merkkleurprijs
BMWblauw35000
BMWrood32000
Fordblauw22000
Fordrood19500

完全匹配你想要的每个品牌下各颜色的价格平均值需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:43:12