почему самая большая функция выдает ошибку pyspark - PullRequest
0 голосов
/ 01 марта 2020

у меня есть фрейм данных; который имеет несколько столбцов с именем fib_1, fib_3, fib_5 и т. д.

Я пытаюсь создать один столбец Fib со значениями max(fib_1,fib_2,fib_3)

df.withColumn("Fib", greatest(list(filter(lambda x: x.startswith('fib_'),df.columns)))).show()

Я получаю ниже ошибку:

ValueError: наибольший должен занимать не менее двух столбцов

fib_1, fib_2, fib_2 имеют значения 0 и 1.

В кадре данных есть другие столбцы с разными типами данных

1 Ответ

1 голос
/ 01 марта 2020

Вы должны добавить *, чтобы распаковать список столбцов, которые вы передаете функции greatest.

Если вы посмотрите документацию , он принимает *cols в качестве параметра:

pyspark.sql.functions.greatest(*cols)

Так что просто используйте:

df.withColumn("Fib", greatest(*list(filter(lambda x: x.startswith('fib_'), df.columns)))).show()
...