gpt4 book ai didi

python - 如何找到基于权重的自定义平均值,包括处理 Pandas 中的 nan 值?

转载 作者:行者123 更新时间:2023-12-04 09:11:21 25 4
gpt4 key购买 nike

我有一个数据框 df_ss_g 作为

ent_id,WA,WB,WC,WD
123,0.045251836,0.614582906,0.225930615,0.559766482
124,0.722324239,0.057781167,,0.123603561
125,,0.361074325,0.768542766,0.080434134
126,0.085781742,0.698045853,0.763116684,0.029084545
127,0.909758657,,0.760993759,0.998406211
128,,0.32961283,,0.90038336
129,0.714585519,,0.671905291,
130,0.151888772,0.279261613,0.641133263,0.188231227
现在我必须计算基于权重的平均值(AVG_WEIGHTAGE),即 = (WA*0.5+WB*1+WC*0.5+WD*1)/(0.5+1+0.5+1)但是当我使用以下方法计算它时,即
df_ss_g['AVG_WEIGHTAGE']= df_ss_g.apply(lambda x:((x['WA']*0.5)+(x['WB']*1)+(x['WC']*0.5)+(x['WD']*1))/(0.5+1+0.5+1) , axis=1)
IT 输出,即对于 NaN 值,它将 NaN 作为 AVG_WEIGHTAGE 作为 null,这是错误的。
enter image description here
我想要的只是分母和分子中不应考虑空值
例如
ent_id,WA,WB,WC,WD,AVG_WEIGHTAGE
128,,0.32961283,,0.90038336,0.614998095 i.e. (WB*1+WD*1)/1+1
129,0.714585519,,0.671905291,,0.693245405 i.e. (WA*0.5+WC*0.5)/0.5+0.5

最佳答案

IUC:

import numpy as np

weights = np.array([0.5, 1, 0.5, 1]))
values = df.drop('ent_id', axis=1)

df['AVG_WEIGHTAGE'] = np.dot(values.fillna(0).to_numpy(), weights)/np.dot(values.notna().to_numpy(), weights)


df['AVG_WEIGHTAGE']
0 0.436647
1 0.217019
2 0.330312
3 0.383860
4 0.916891
5 0.614998
6 0.693245
7 0.288001

关于python - 如何找到基于权重的自定义平均值,包括处理 Pandas 中的 nan 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63344888/

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