У меня есть следующий DataFrame:
+-----------+----------+----------+
| some_id | one_col | other_col|
+-----------+----------+----------+
| xx1 | 11| 177|
| xx2 | 1613| 2000|
| xx4 | 0| 12473|
+-----------+----------+----------+
Мне нужно добавить новый столбец, который основан на некоторых вычислениях, выполненных для первого и второго столбца, а именно, например, для col1_value = 1 и col2_value = 10 потребуется произвести процентное соотношение col1, которое включено в col2 , поэтому col3_value = (1/10) * 100 = 10%:
+-----------+----------+----------+--------------+
| some_id | one_col | other_col| percentage |
+-----------+----------+----------+--------------+
| xx1 | 11| 177| 6.2 |
| xx3 | 1| 10 | 10 |
| xx2 | 1613| 2000| 80.6 |
| xx4 | 0| 12473| 0 |
+-----------+----------+----------+--------------+
Я знаю, что для этого мне понадобится использовать udf, но как мне напрямую добавить новое значение столбца в зависимости от результата?
Какой-то псевдокод:
import pyspark
from pyspark.sql.functions import udf
df = load_my_df
def my_udf(val1, val2):
return (val1/val2)*100
udf_percentage = udf(my_udf, FloatType())
df = df.withColumn('percentage', udf_percentage(# how?))
Спасибо!