gpt4 book ai didi

python - 使用 Pandas 计算加权平均值以降低成本

转载 作者:行者123 更新时间:2023-12-01 07:52:18 24 4
gpt4 key购买 nike

我正在安装一个排名系统,基本上我有一个名为 site_fees 的字段,占总数的 10% 供考虑。 0 站点费即可获得全部 10 分。我想做的是计算非零字段会得到多少分,但我很难做到这一点。

我最初的方法是将数据帧分成 2 个数据帧(dfb,其中 site_fees 为 0,dfa,它们 > 0)并计算 dfa 的平均值,将 dfb 的评级指定为 10,然后将两者合并。

代码如下:

dfSitesa = dfSites[dfSites['site_fees'].notnull()]
dfSitesb = dfSites[dfSites['site_fees'].isnull()]
dfSitesa['rating'] = FeeWeight * \
dfSitesa['site_fees'].min()/dfSitesa['site_fees']
dfSitesb['rating'] = FeeWeight
dfSites = pd.concat([dfSitesa,dfSitesb])

这会产生输出,但 dfa 的结果不正确,因为 dfa 的最小值是 5000 而不是 0,因此费用为 5000 美元的网站的评级为 10(最大值,不正确)。我做错了什么?

最小非零 site_fee 为 5000,最大为 15000。基于此,我期望一个通用排名系统,例如:

15000 | 0
10000 | 3.3
5000 | 6.6
0 | 10

最佳答案

这是一种方法:

dfSites = pd.DataFrame({'site_fees':[0,1,2,3,5]})
FeeWeight = 10

dfSitesa = dfSites[dfSites['site_fees'].notnull()]
dfSitesb = dfSites[dfSites['site_fees'].isnull()]
dfSitesb['rating'] = FeeWeight
factor = (dfSitesa['site_fees'].max() - dfSitesa['site_fees'].min())
dfSitesa['rating'] = FeeWeight * ( 1 - ( (dfSitesa['site_fees'] - dfSitesa['site_fees'].min()) / factor) )
dfSites = pd.concat([dfSitesa,dfSitesb])

In [1] : print(dfSites)
Out[1] :
site_fees rating
0 0 10.0
1 1 8.0
2 2 6.0
3 3 4.0
4 5 0.0

关于python - 使用 Pandas 计算加权平均值以降低成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56149791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com