Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用pyspark查找列中是否包含一个或多个单词';连字句_Python_String_Pyspark - Fatal编程技术网

Python 如何使用pyspark查找列中是否包含一个或多个单词';连字句

Python 如何使用pyspark查找列中是否包含一个或多个单词';连字句,python,string,pyspark,Python,String,Pyspark,我有一个像这样的数据集 我正在尝试使用pyspark标记或筛选包含列表中单词的行 参考列表如下所示 [“房子”、“树”] 所以本质上它应该返回第一行和第三行。 它应该返回第二行,因为树的末尾拼写为s。我只想要全词匹配 我的想法是字符串拆分字符串列,即参考列表中的循环,有更好的方法吗?这对您来说是一个可行的解决方案-使用更高阶函数数组_contains()而不是通过每个项目循环,然而,为了实现解决方案,我们需要稍微简化一下。例如需要将字符串列设置为数组 在这里创建数据框 输出 逻辑在此-使用sp

我有一个像这样的数据集

我正在尝试使用pyspark标记或筛选包含列表中单词的行

参考列表如下所示 [“房子”、“树”]

所以本质上它应该返回第一行和第三行。 它应该返回第二行,因为树的末尾拼写为s。我只想要全词匹配


我的想法是字符串拆分字符串列,即参考列表中的循环,有更好的方法吗?

这对您来说是一个可行的解决方案-使用更高阶函数
数组_contains()
而不是通过每个项目循环,然而,为了实现解决方案,我们需要稍微简化一下。例如需要将字符串列设置为数组

在这里创建数据框 输出 逻辑在此-使用split()将字符串列转换为ArrayType 输出
能否指定您使用的spark版本,您可以对引用列表中的每个值执行拆分并使用array_contains函数,以实现相同的处理引用列表项顺序的功能。您也可以尝试使用正则表达式,但在这种情况下,引用列表项的顺序将影响结果查看此解决方案-类似类型的问题
from pyspark.sql import functions as F
from pyspark.sql import types as T
df = spark.createDataFrame([(1,"This is a Horse"),(2,"Monkey Loves trees"),(3,"House has a tree"),(4,"The Ocean is Cold")],[ "col1","col2"])
df.show(truncate=False)
+----+-----------------+
|col1|col2             |
+----+-----------------+
|1   |This is a Horse  |
|2   |Monkey Loves trees|
|3   |House has a tree |
|4   |The Ocean is Cold|
+----+-----------------+
df = df.withColumn("col2", F.split("col2", " "))
df = df.withColumn("array_filter", F.when(F.array_contains("col2", "This"), True).when(F.array_contains("col2", "tree"), True))
df = df.filter(F.col("array_filter") == True)
df.show(truncate=False)
   +----+---------------------+------------+
|col1|col2                 |array_filter|
+----+---------------------+------------+
|1   |[This, is, a, Horse] |true        |
|3   |[House, has, a, tree]|true        |
+----+---------------------+------------+