如何在pySpark的.when()中使用多个.contains()?

我试图根据另一列中的现有单词在新列中创建类。为此,我需要包括多个.contains()条件。但是我没有一个尝试过。

def classes_creation(data):
    df = data.withColumn("classes",when(data.where(F.col("MISP_RFW_Title").like('galleys') | F.col("MISP_RFW_Title").like('coffee')),"galleys") ).otherwise(lit(na))
    return df
# RETURNS ERROR
def classes_creation(data):
     df = data.withColumn("classes",when(col("MISP_RFW_Title").contains("galleys").contains("word"),'galleys').otherwise(lit(na))
     return df
# RETURNS COLUMN OF NA ONLY
def classes_creation(data):
     df = data.withColumn("classes",when(col("MISP_RFW_Title").contains("galleys" | "word"),'galleys').otherwise(lit(na))
     return df
# RETURNS COLUMN OF NA ONLY
jining123456 回答:如何在pySpark的.when()中使用多个.contains()?

如果我正确理解了您的要求,则可以使用正则表达式与rlike匹配

data.withColumn("classes",when(col("MISP_RFW_Title").rlike("galleys|word"),'galleys').otherwise('a'))

或者如果您有不同的列,则可以使用类似的内容

data.withColumn("classes",when((col("MISP_RFW_Title").contains("galleys")|col("MISP_RFW_Title").contains("word")),'galleys').otherwise('a'))
本文链接:https://www.f2er.com/3145991.html

大家都在问