我有一个数据框;其中具有名称为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。
数据框具有其他具有不同数据类型的列
您必须添加*
才能解包传递给greatest
函数的列的列表。
[如果您查看documentation,它将*cols
作为参数:
pyspark.sql.functions.greatest(*cols)
因此只需使用:
df.withColumn("Fib", greatest(*list(filter(lambda x: x.startswith('fib_'), df.columns)))).show()