pyspark:TypeError:条件应该是带有,否则为的列

问题描述 投票:1回答:1

我编写了一个从参数文件获取条件并根据条件添加列值的函数;但我不断收到错误TypeError:条件应该是Column

condition = "type_txt = 'clinic'"
input_df = input_df.withColumn(
        "prm_data_category",
        F.when(condition, F.lit("clinic")) # this doesn't work 
        .when(F.col("type_txt") == 'office', F.lit("office")) # this works
        .otherwise(F.lit("other")),
    )

有没有什么方法可以将条件用作sql条件,因此很容易通过参数而不是col来传递?

pyspark case-when
1个回答
0
投票

您可以使用sql expr来使用F.expr

from pyspark.sql import functions as F
    condition = "type_txt = 'clinic'"
    input_df1 = input_df.withColumn(
            "prm_data_category",
            F.when(F.expr(condition), F.lit("clinic")) 
            .when(F.col("type_txt") == 'office', F.lit("office"))
            .otherwise(F.lit("other")),
        )
© www.soinside.com 2019 - 2024. All rights reserved.