Мой искровой фрейм выглядит так:
+------+------+-------+------+
|userid|useid1|userid2|score |
+------+------+-------+------+
|23 |null |dsad |3 |
|11 |44 |null |4 |
|231 |null |temp |5 |
|231 |null |temp |2 |
+------+------+-------+------+
Я хочу выполнить расчет для каждой пары userid и useid1 / userid2 (в зависимости от того, что не равно нулю).
И если это useid1, я умножаю счет на 5, если это userid2, я умножаю счет на 3.
Наконец, я хочу добавить все оценки для каждой пары.
Результат должен быть:
+------+--------+-----------+
|userid|useid1/2|final score|
+------+--------+-----------+
|23 |dsad |9 |
|11 |44 |20 |
|231 |temp |21 |
+------+------+-------------+
Как я могу это сделать?
Для части groupBy
я знаю, что в dataframe есть функция groupBy
, но я не знаю, могу ли я использовать ее условно, например, если userid1 равен нулю, groupby(userid, userid2)
, если userid2 равен нулю, groupby(userid, useid1)
.
Для части расчета, как умножить 3 или 5 на основе условия?