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

2024-04-24 12:07:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在一个新的列中创建类,基于另一个列中的现有单词。为此,我需要包含多个.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

Tags: dfdatatitledefcolclassescreationwhen
1条回答
网友
1楼 · 发布于 2024-04-24 12:07:26

如果我正确理解了您的需求,您可以使用regex来匹配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'))

相关问题 更多 >