Удаление не ascii и специального символа в столбце pyspark dataframe - PullRequest
1 голос
/ 29 января 2020

Я читаю данные из файлов CSV, которые имеют около 50 столбцов, некоторые из столбцов (от 4 до 5) содержат текстовые данные с не-ASCII-символами и специальными символами.

df = spark.read.csv(path, header=True, schema=availSchema)

Я пытаюсь удалите все не-Ascii и специальные символы и оставьте только символы Engli sh, и я попытался сделать это, как показано ниже

df = df['textcolumn'].str.encode('ascii', 'ignore').str.decode('ascii')

В имени моего столбца нет пробелов. Я получаю сообщение об ошибке

TypeError: 'Column' object is not callable
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<command-1486957561378215> in <module>
----> 1 InvFilteredDF = InvFilteredDF['SearchResultDescription'].str.encode('ascii', 'ignore').str.decode('ascii')

TypeError: 'Column' object is not callable

Есть ли альтернатива совершению sh этого, благодарю за любую помощь в этом.

1 Ответ

3 голосов
/ 29 января 2020

Это должно сработать.

Сначала создайте временный пример кадра данных:

df = spark.createDataFrame([
    (0, "This is Spark"),
    (1, "I wish Java could use case classes"),
    (2, "Data science is  cool"),
    (3, "This is aSA")
], ["id", "words"])

df.show()

Вывод

+---+--------------------+
| id|               words|
+---+--------------------+
|  0|       This is Spark|
|  1|I wish Java could...|
|  2|Data science is  ...|
|  3|      This is aSA|
+---+--------------------+

Теперь, чтобы написать UDF потому что те функции, которые вы используете, не могут быть непосредственно выполнены для типа столбца, и вы получите Column object not callable error

Решение

from pyspark.sql.functions import udf

def ascii_ignore(x):
    return x.encode('ascii', 'ignore').decode('ascii')

ascii_udf = udf(ascii_ignore)

df.withColumn("foo", ascii_udf('words')).show()

Выход

+---+--------------------+--------------------+
| id|               words|                 foo|
+---+--------------------+--------------------+
|  0|       This is Spark|       This is Spark|
|  1|I wish Java could...|I wish Java could...|
|  2|Data science is  ...|Data science is  ...|
|  3|      This is aSA|         This is aSA|
+---+--------------------+--------------------+
...