我有以下数据框:
+----+----+----+----+
|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:参数无效,不是<class'float'>类型的字符串或列:1.5。对于列文字,请使用'lit'、'array'、'struct'或'create\ map'函数。
1条答案
按热度按时间2jcobegt1#
使用
F.lit(1.5)
内部F.least
,因为它需要列并且不接受浮点: