pyspark:将列值与另一个值进行比较

blpfk2vs  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(260)

我有以下数据框:

+----+----+----+----+
|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'函数。

2jcobegt

2jcobegt1#

使用 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)))

相关问题