【发布时间】:2019-09-24 00:47:13
【问题描述】:
我正在使用具有以下结构的 DataFrame 试验 Python/Pandas:
import pandas as pd
import numpy as np
df = pd.DataFrame({"item" : ["A", "B", "C", "D", "E"],
"size_ratio" : [0.3, 0.9, 1, 0.4, 0.7],
"weight_ratio" : [0.5, 0.7, 1, 0.5, np.nan],
"power_ratio" : [np.nan, 0.3, 0.5, 0.1, 1]})
print(df)
item size_ratio weight_ratio power_ratio
0 A 0.3 0.5 NaN
1 B 0.9 0.7 0.3
2 C 1.0 1.0 0.5
3 D 0.4 0.5 0.1
4 E 0.7 NaN 1.0
如您所见,每个项目由三个标准化指标描述,即:size_ratio、weight_ratio 和power_ratio。此外,NaN 值可能适用于每个指标。
我的目标是将这些指标组合在一起,为每一行创建一个全局分数 (S)。具体来说,我想应用/实现的功能如下:
在哪里
- s_i 是个人分数;
- w_i 是与每个指标相关的用户定义权重;
- alpha 是用户定义的参数(正整数)。
我希望能够快速调整权重和参数alpha来测试不同的组合。
例如,设置 w_1 = 3、w_2 = 2、w_3 = 1 和 alpha = 5、输出应该如下:
item size_ratio weight_ratio power_ratio global_score
0 A 0.3 0.5 NaN 0.36
1 B 0.9 0.7 0.3 0.88
2 C 1.0 1.0 0.5 0.99
3 D 0.4 0.5 0.1 0.44
4 E 0.7 NaN 1.0 0.70
请注意,对于分母,我们仅将与非缺失指标相关的权重相加(分子的逻辑相同)。
作为 Python 编程语言的新手,我首先在这里寻找答案。在this 的帖子中,我学习了如何在带有缺失值的 pandas DataFrame 上计算逐行操作;在this 帖子中,我看到了一个使用字典设置权重的示例。
很遗憾,我无法将发现的内容应用于我的具体问题。现在,我正在使用 Excel 进行不同的模拟,但我非常想在 Python 中进行实验。任何帮助将不胜感激。
【问题讨论】:
标签: python pandas function dataframe