我有以下数据框:
+----+----+----+----+
|col0|col1|col2|col3|
+----+----+----+----+
| 1| 21| 3|null|
| 4| 5| 23|null|
|null| 4| 5| 6|
|null| 9| 22| 42|
+----+----+----+----+
我尝试计算列 'col1' 和 1.5 的最小值:
import pyspark.sql.functions as F
cond = df['col2'] > 10
df = df.withColumn('new_col', F.when(cond, F.least(F.col('col1')*0.2, 1.5)).otherwise(F.lit(100)))
df.show()
但我得到以下异常:
<块引用>TypeError: 无效参数,不是字符串或列:类型
答案 0 :(得分:2)
在 F.lit(1.5)
中使用 F.least
,因为它需要一个列并且不接受浮点数:
df2 = df.withColumn('new_col', F.when(cond, F.least(F.col('col1')*0.2, F.lit(1.5))).otherwise(F.lit(100)))