PySpark使用when/otherwise添加新列时触发'condition should be a Column'错误
解决PySpark中
TypeError: condition should be a Column错误 错误核心原因是你误用了isNotNull属性,而非调用isNotNull()方法——F.col("column_a").isNotNull是指向方法本身的对象,并非返回的Column类型布尔条件,而F.when要求第一个参数必须是Column类型的条件值。
简化示例修正:
import pyspark.sql.functions as F df.withColumn("new_column", F.when(F.col("column_a").isNotNull(), F.lit("A")) .otherwise(F.lit("B")))
你的实际需求修正代码:
import pyspark.sql.functions as F df.withColumn("new_column", F.when(F.col("column_a").isNotNull(), F.regexp_extract(F.col("column_a"), 'myregex', 1)) .otherwise(F.regexp_extract(F.col("column_b"), 'myotherregex', 1)))
额外建议:在regexp_extract中用F.col()显式引用列,虽然字符串列名在部分场景下可行,但显式使用Column对象能避免潜在的歧义问题。
内容的提问来源于stack exchange,提问作者orderlyfashion
相关产品推荐
相关产品推荐

