我有一个数据库,里面的产品有一个产品类型和一个产品线(一组产品类型)。我必须计算每种产品类型的平均销售额,到目前为止很简单:
df.groupby('Type')['Sales'].avg()
问题是有些类型的数据很低,例如新产品的数据。因此,在这种情况下,企业希望使用产品线平均值,而不是单一的产品类型平均值
所以本质上,我必须构建一个定制的聚合函数,它将根据组计数改变行为,顺便说一句,当统计数据较低时,它将需要访问整个数据库的信息
解决这个问题的最佳方法是什么
我已经试过分组和循环了。它是有效的,但是我必须把值填回到表中,我不知道怎么做。另一种方法是创建一个自定义聚合函数并通过.agg传递它,但我不知道如何实现它
group = df.groupby('Type')['Sales'].avg()
for name, group in tab_sales_per_machines:
nmachines = group['Machine'].nunique()
if nmachines < 5 :
... do stuff using df...
else :
group['Sales'].avg()
您可以尝试使用
apply
(以获得比agg
多一点的灵活性):我设法解决了它通过循环对小组。我在这里发布我的解决方案。这是可行的,但似乎不是最优雅的方式。万一有人有更好的主意,我会很高兴听到的。注意:这个函数比这个复杂一点:我试着把它分解成需要理解的基本部分
相关问题 更多 >
编程相关推荐