Dataframe 如何在数字pyspark或NLP之间进行分割
我想在数据帧的一列中进行多重拆分。 例如: 我如何获得:Dataframe 如何在数字pyspark或NLP之间进行分割,dataframe,apache-spark,pyspark,nlp,Dataframe,Apache Spark,Pyspark,Nlp,我想在数据帧的一列中进行多重拆分。 例如: 我如何获得: s = ['Cras', 'mattis', 'MP', 'the', '69661', '69662', '69663', 'IS4567' ] 感谢您使用SparkSQL的内置函数和[Flatte()需要spark 2.4.0+]: Apache Hive文档中的内容: 将自然语言文本字符串标记为单词和句子,其中每个句子在适当的句子边界处断开,并作为单词数组返回。“lang”和“locale”是可选参数。例如,句子(‘你好!你好吗?
s = ['Cras', 'mattis', 'MP', 'the', '69661', '69662', '69663', 'IS4567' ]
感谢您使用SparkSQL的内置函数和[Flatte()需要spark 2.4.0+]: Apache Hive文档中的内容: 将自然语言文本字符串标记为单词和句子,其中每个句子在适当的句子边界处断开,并作为单词数组返回。“lang”和“locale”是可选参数。例如,句子(‘你好!你好吗?’)返回(‘你好’、‘你好’、‘你好’、‘你好’、‘你’) 您可以使用采用正则表达式模式分割数据的函数
import pyspark.sql.functions as f
df.withColumn('ns', f.split('s', "[^a-zA-Z0-9']+")).show(10,False)
+---------------------------------------------+----------------------------------------------------+
|s |ns |
+---------------------------------------------+----------------------------------------------------+
|Cras mattis MP the -69661/69662;69663 /IS4567|[Cras, mattis, MP, the, 69661, 69662, 69663, IS4567]|
+---------------------------------------------+----------------------------------------------------+
注意:
“[^a-zA-Z0-9']+”
将处理基本的英文字符,但如果您想包含特殊字符,可以使用通用的\p{L}
而不是像“[^\\p{L}0-9']+”
语句不是pyspark.sql.function
的一部分?我们可以不使用select而使用它吗?@PIG,您可以始终使用带有dataFrame API的pyspark.sql.functions.expr
运行SparkSQL。
from pyspark.sql.functions import expr
df.withColumn('new_s', expr('flatten(sentences(s))')).show(truncate=False)
#+---------------------------------------------+----------------------------------------------------+
#|s |new_s |
#+---------------------------------------------+----------------------------------------------------+
#|Cras mattis MP the -69661/69662;69663 /IS4567|[Cras, mattis, MP, the, 69661, 69662, 69663, IS4567]|
#+---------------------------------------------+----------------------------------------------------+
import pyspark.sql.functions as f
df.withColumn('ns', f.split('s', "[^a-zA-Z0-9']+")).show(10,False)
+---------------------------------------------+----------------------------------------------------+
|s |ns |
+---------------------------------------------+----------------------------------------------------+
|Cras mattis MP the -69661/69662;69663 /IS4567|[Cras, mattis, MP, the, 69661, 69662, 69663, IS4567]|
+---------------------------------------------+----------------------------------------------------+