我有一个包含不同国家(行)和4个指标(列)a、B、C和D的pandas数据框。 对于每个指标,我都有一个特定的权重来计算它们的加权和,比如:weighth_a=0.2,weighth_B=0.2,weight_C=0.4,weight_D=0.2
这是我加权和的公式
df['W_Sum'] = Weigth_A*df['A'] + Weigth_B*df['B'] + Weigth_C*df['C'] + Weigth_D*df['D']
但是,如果一列是NaN(在本例中假设为D),我需要将我的加权和更改为一个正态平均值
df['W_Sum'] = 0.33*df['A'] + 0.33*df['B'] + 0.33*df['C']
如果缺少两个,则:
df['W_Sum'] = 0.5*df['A'] + 0.5*df['B']
有没有一种方法可以自动实现这个过程,因为我不确定哪一列对每个国家都缺少一个值?你知道吗
谢谢!你知道吗
我本来打算写一个基本上和yatu一样的答案,但是我想提高一点效率。你知道吗
考虑到计算一些你不会用到的东西是没有意义的。你知道吗
使用
np.dot
而不是手动计算wa
的虚拟df在速度和泛化方面更好您可以使用^{} 来实现:
示例
详细信息
np.where
将根据条件has_nans
的结果在平均值或加权平均值中选择:相关问题 更多 >
编程相关推荐