我有一个带有特殊字符(如áãâàéêèíîìóõôòúûùç
(的字符串列的spark df,我想用aaaaeeeiiioooouuuc
分别替换它们
作为我想要的一个例子:
name | unaccent
Vitória | Vitoria
João | Joao
Maurício | Mauricio
我找到了这个例子,但它不适用于这些特殊字符Pyspark删除数据帧列中的多个字符
我试图手动创建这个df,但由于某种原因,我无法复制特殊字符,出现了一个问号?
:
from pyspark.sql import functions as F
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, TimestampType
df = spark.createDataFrame(data=[("Vitória",),("João",),("Maurício",)], schema= StructType([StructField("A", StringType(),True)]))
df.show()
+--------+
| A|
+--------+
| Vit?ria|
| Jo?o|
|Maur?cio|
+--------+
当我使用translate
函数时,这是的结果
df.select("A",
F.translate(F.col("A"), "áãâàéêèíîìóõôòúûùç", "aaaaeeeiiioooouuuc").alias("unaccent")).show()
+--------+--------+
| A|unaccent|
+--------+--------+
| Vit?ria| Vitaria|
| Jo?o| Joao|
|Maur?cio|Mauracio|
+--------+--------+
你有没有想过如何去掉这些特殊的字符?
问题似乎出在IDE中,而不是PySpark中。
我的环境:VS代码中的jupiter笔记本(macos(:
df.withColumn(
"unaccent",
F.translate(F.col("A"), "áãâàéêèíîìóõôòúûùç", "aaaaeeeiiioooouuuc")
).show()
产生正确的输出:
+--------+--------+
| A|unaccent|
+--------+--------+
| Vitória| Vitoria|
| João| Joao|
|Maurício|Mauricio|
+--------+--------+
(备件版本=3.2.1(