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

Python 如何在pySpark中的.when()中使用多个.contains()?,python,pyspark,Python,Pyspark,我试图在一个新的专栏中创建类,基于另一个专栏中的现有单词。为此,我需要包含多个.contains()条件。但我试过的都没有 def类创建(数据): df=数据。带列(“类”,当(数据。其中(F.col(“MISP_RFW_Title”)。如('galleys'))| F.col(“MISP_RFW_Title”)。如('coffee'),“galleys”)。否则(点亮(na)) 返回df #返回错误 def类创建(数据): df=数据。当(列(“类”)包含(“厨房”)。包含(“单词”),“厨

我试图在一个新的专栏中创建类,基于另一个专栏中的现有单词。为此,我需要包含多个.contains()条件。但我试过的都没有

def类创建(数据):
df=数据。带列(“类”,当(数据。其中(F.col(“MISP_RFW_Title”)。如('galleys'))| F.col(“MISP_RFW_Title”)。如('coffee'),“galleys”)。否则(点亮(na))
返回df
#返回错误
def类创建(数据):
df=数据。当(列(“类”)包含(“厨房”)。包含(“单词”),“厨房”)。否则(点亮(na))
返回df
#仅返回NA列
def类创建(数据):
df=数据。当(col(“MISP_RFW_Title”).包含(“galleys”|“word”),“galleys”)时,使用列(“类”)。否则(lit(na))
返回df
#仅返回NA列

如果我正确理解了您的需求,您可以使用正则表达式与
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'))

不起作用,因为我需要包含条件或类似的条件。它们使用运算符,例如==或<或>。在实现代码时,我遇到以下错误:
in when raise TypeError(“条件应为列”)TypeError:条件应该是一列
@J.Perez对我来说很好..你使用的Spark版本是什么?你能分享一些数据吗?