gpt4 book ai didi

python - pyspark : removing special/numeric strings from array of string

转载 作者:行者123 更新时间:2023-12-01 09:10:24 26 4
gpt4 key购买 nike

为了简单起见,我有一个具有以下架构的 df:

root

|-- Event_Time: string (nullable = true)

|-- tokens: array (nullable = true)

| |-- element: string (containsNull = true)

“ token ”的某些元素具有数字和特殊字符,例如:

 "431883", "r2b2", "@refe98"

有什么办法可以删除所有这些并只保留实际单词吗?我想稍后做一个LDA,并想在之前清理我的数据。我尝试了 regexp_replaceexplodestr.replace 但没有成功,也许我没有正确使用它们。谢谢

编辑2:

df_2 = (df_1.select(explode(df_1.tokens).alias('elements'))
.select(regexp_replace('elements','\\w*\\d\\w**',""))
)

这只适用于字符串类型的列,并且使用爆炸方法我可以将数组分解为字符串,但不再在同一行中......任何人都可以对此进行改进吗?

最佳答案

from pyspark.sql.functions import *
df = spark.createDataFrame([(["@a", "b", "c"],), ([],)], ['data'])
df_1 = df.withColumn('data_1', concat_ws(',', 'data'))
df_1 = df_1.withColumn("data_2", regexp_replace('data_1', "['{@]",""))
#df_1.printSchema()
df_1.show()

+----------+------+------+
| data|data_1|data_2|
+----------+------+------+
|[@a, b, c]|@a,b,c| a,b,c|
| []| | |
+----------+------+------+

关于python - pyspark : removing special/numeric strings from array of string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51706383/

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