Python:根据熊猫数据框中的权重计算分数

时间:2020-11-10 02:03:51

标签: python pandas

我有一个数据框。

enter image description here

这是“ final_score”列的代码:

weights = [0.3,0.1,0.1,0.5]
df.mul(weights).sum(axis=1)

如您所见,我正在尝试设置权重并将每个值相乘以获得一个分数(在final_score中列出)。但是,有些值为“无”(NaN)。我的问题是,当显示“无”的实例时,如何更改权重,以使权重在其他列中更大。

例如,在第2行中,所有值都存在,因此,我已分配的权重正在相应地计算。 在第0行和第1行中,如何移动权重以使没有权重City_score,而是将权重转移到其他三列(例如[0.3,0,0.1,0.6])

2 个答案:

答案 0 :(得分:1)

您可以将所有NaN的值替换为0,因此当权重应用于该单元格时,它将自动变为0(即,权重将按比例移至其他列)。

Pandas中有一种方法可以执行此操作:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html

答案 1 :(得分:1)

您可以只使用df.fillna()

df.fillna(0).mul(weights).sum(axis=1)