我尝试按以下方式过滤我的pyspark数据框:有一列包含long_text
,另一列包含数字。如果长文本包含该数字
,我想要保留该列。
我尝试使用SQL的LIKE
语句,但似乎无法应用于另一列(这里是number
)。
我的代码如下:
from pyspark.sql.functions import regexp_extract, col, concat, lit
from pyspark.sql.types import *
PN_in_NC = (df
.filter(df.long_text.like(concat(lit("%"), df.number, lit("%"))))))
我遇到了以下错误:Method like([class org.apache.spark.sql.Column]) does not exist
。
我尝试了多种方法来解决它(比如在过滤器之前将'%number%'
字符串创建为列,不使用lit
,使用'%' + number + '%'
),但是都没有起作用。如果LIKE
不能应用于另一列,是否有其他方法可以实现这个目的?
pyspark.sql.functions.expr
来实现。将列值用作 Spark DataFrame 函数的参数。 - pault