gpt4 book ai didi

python - Pyspark:如果列包含来自另一列的字符串(SQL LIKE 语句),则过滤数据框

转载 作者:行者123 更新时间:2023-12-03 15:16:01 24 4
gpt4 key购买 nike

我正在尝试通过以下方式过滤我的 pyspark 数据框:我有一列包含 long_text和一列包含数字。如果长文本包含 number我想保留专栏。
我正在尝试使用 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%' 字符串作为列,而不是使用 litusing '%' + number + '%' )但没有任何效果。如 LIKE不能应用于另一列,还有其他方法可以做到这一点吗?

最佳答案

您可以使用 contains功能。

from pyspark.sql.functions import *
df1 = spark.createDataFrame([("hahaha the 3 is good",3),("i dont know about 3",2),("what is 5 doing?",5),\
("ajajaj 123",2),("7 dwarfs",1)], ["long_text","number"])
df1.filter(col("long_text").contains(col("number"))).show()

long_text 列应包含 number 列中的数字。

输出:
+--------------------+------+
| long_text|number|
+--------------------+------+
|hahaha the 3 is good| 3|
| what is 5 doing?| 5|
| ajajaj 123| 2|
+--------------------+------+

关于python - Pyspark:如果列包含来自另一列的字符串(SQL LIKE 语句),则过滤数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54866039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com