Я хочу добавить один столбец ("new_col
"). в кадре данных, основанном на других правилах, который вычисляется из существующих столбцов. Правила сложны и иногда вычисляются на основе 4-5 столбцов данных. Пожалуйста, обратитесь к фрагменту ниже:
old dataframe = df(A,B,C,D,E,F,G,H)
new dataframe = old_dataframe.withcolums("new_col", myudf(col(A),col(B),col(C),col(D),col(E)))
entries in col(new_col) is computed as following:
def myudf(A,B,C,D,E): String = {
if (A=="something") {
if (B="something") {
return val1
} else {
if (C>"something" || D<"something") {
return val2
}
else {
return func(E)
}
}
} else {
return val3
}
}
}
В настоящее время я написал UDF, который принимает все необходимые столбцы и возвращает значение нового столбца, который будет добавлен. Но проблема в том, что функция udf стала довольно сложной из-за большего количества правил и стала лестницей if-else. Я хочу избежать этого и думаю о рефакторинге, если это возможно. Я также посмотрел на другие ответы, чтобы избежать «если-еще», но для этого информационного кадра ни одно из решений не обсуждается.
Кто-нибудь может подсказать, есть ли какой-нибудь изящный способ написания таких правил для фреймов данных в scala?