Python 3.x 如何使用另一列中的一列替换字符串值?
如何使用另一列中的一列替换字符串值 我的数据框看起来像 Fname,MiddleName,应为\u Fname 约翰·D·霍伊,D·约翰·霍伊 约翰·D·霍伊,空,约翰·D·霍伊 约翰·多伊·霍伊,多伊,约翰·霍伊 约翰·D·D·约翰 约翰,约翰,约翰 约翰H,D,约翰H 约翰多伊,多伊,约翰 基本上在某些情况下,名字包含中间名中的值。我需要创建一个名字栏,不应该包含中间名中的值。Python 3.x 如何使用另一列中的一列替换字符串值?,python-3.x,pyspark,Python 3.x,Pyspark,如何使用另一列中的一列替换字符串值 我的数据框看起来像 Fname,MiddleName,应为\u Fname 约翰·D·霍伊,D·约翰·霍伊 约翰·D·霍伊,空,约翰·D·霍伊 约翰·多伊·霍伊,多伊,约翰·霍伊 约翰·D·D·约翰 约翰,约翰,约翰 约翰H,D,约翰H 约翰多伊,多伊,约翰 基本上在某些情况下,名字包含中间名中的值。我需要创建一个名字栏,不应该包含中间名中的值。 如何在PySpark中创建列“Expected\u FName”?您可以使用expr: from pyspark.
如何在PySpark中创建列“Expected\u FName”?您可以使用
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 |
+---------------+----------+--------------+----------+
还有一个例子,Fname=“John Dick H”和MiddleName=“D”的预期结果是=“John Dick H”。在这种情况下,不要删除“D”。怎么可能呢?