Как можно заменить строковое значение, используя один столбец в другом столбце? - PullRequest
0 голосов
/ 17 июня 2020

Как можно заменить строковое значение, используя один столбец в другом столбце?

Мой DataFrame выглядит как

Fname, MiddleName, Expected_FName

John D Hoye, D, John Hoye

John D Hoye, Null, John D Hoye

John D-Doe Hoye, D-Doe, John Hoye

John D, D, John

D John, D, John

JohnD H, D, JohnD H

John Doe Hoy, Doe Hoy, John

Обычно в некоторых случаях имя содержит значение отчества. Мне нужно создать столбец с именем, который не должен содержать значений отчества. Как я могу создать столбец «Expected_FName» в PySpark?

1 Ответ

0 голосов
/ 17 июня 2020

Вы можете использовать expr:

from pyspark.sql import functions

df = spark.createDataFrame([
    'John D Hoye,D,John Hoye'.split(','),
    ['John D Hoye', None, 'John D Hoye'],
    'John D-Doe Hoye,D-Doe,John Hoye'.split(','),
    'John D,D,John'.split(','),
    'D John,D,John'.split(','),
    'John Doe Hoy,Doe Hoy,John'.split(',')
], 'Fname,MiddleName,Expected_FName'.split(','))

res = df.withColumn('expected', functions.expr("regexp_replace(Fname, MiddleName, '')")
res.show()

+---------------+----------+--------------+----------+
|          Fname|MiddleName|Expected_FName|  expected|
+---------------+----------+--------------+----------+
|    John D Hoye|         D|     John Hoye|John  Hoye|
|    John D Hoye|      null|   John D Hoye|      null|
|John D-Doe Hoye|     D-Doe|     John Hoye|John  Hoye|
|         John D|         D|          John|     John |
|         D John|         D|          John|      John|
|   John Doe Hoy|   Doe Hoy|          John|     John |
+---------------+----------+--------------+----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...