为什么最大的函数会抛出错误pyspark

问题描述 投票:0回答:1

我有一个数据框;其中具有名称为fib_1fib_3fib_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_1fib_2fib_2的值为0和1。

数据框具有其他具有不同数据类型的列

pyspark pyspark-sql pyspark-dataframes
1个回答
0
投票

您必须添加*才能解包传递给greatest函数的列的列表。

[如果您查看documentation,它将*cols作为参数:

pyspark.sql.functions.greatest(*cols)

因此只需使用:

df.withColumn("Fib", greatest(*list(filter(lambda x: x.startswith('fib_'), df.columns)))).show()
© www.soinside.com 2019 - 2024. All rights reserved.