Вот мой фрейм данных df:
str1 str2 str3 str4
key1 3 4 2 5
key2 NaN 3 4 4
key3 NaN NaN NaN 2
и вектор w:
[0.2, 0.3, 0.5]
Обычно я использую df.T.dot(w)
для вычисления произведения между кадром данных и вектором. Но я хотел бы знать, как я могу избежать значения NaN путем повторного взвешивания вектора и вычисления, пока не существует полный столбец NaN.
Пример для моего случая:
Для первого столбца я бы хотел, чтобы вектор был равен v = [0.2+0.3+0.5, 0, 0]
и вычислял [3, NaN, NaN]
раз [1, 0, 0]
.
Для 2-го столбца я бы хотел v = [0.2+0.25, 0.3+0.25, 0]
.
Для 3-го столбца я бы хотел v = [0.2+0.25, 0.3+0.25, 0]
.
Для 4-го столбца я бы хотел v
без изменений, потому что нет NaN.
Ожидаемый результат:
str1 str2 str3 str4
0 3 3.45 3.1 4.7