Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyspark使用另一列中的值替换Spark dataframe列中的字符串_Python_Pyspark_Pyspark Sql - Fatal编程技术网

Python Pyspark使用另一列中的值替换Spark dataframe列中的字符串

Python Pyspark使用另一列中的值替换Spark dataframe列中的字符串,python,pyspark,pyspark-sql,Python,Pyspark,Pyspark Sql,我想通过从另一列创建搜索字符串来替换列中的值 以前 id地址st 1.2.PA1234.la 1234 2.10.PA125.la 125 3.2.PA156.ln 156 之后 id地址st 1.2.PA9999.la 1234 2 10.PA9999.la 125 3.2.PA9999.ln 156 我试过了 两条缝都有可能失败 TypeError: 'Column' object is not callable 可能类似于 您也可以使用spark udf 每当需要使用另一列中的值

我想通过从另一列创建搜索字符串来替换列中的值

以前

id地址st
1.2.PA1234.la 1234 2.10.PA125.la 125 3.2.PA156.ln 156
之后

id地址st
1.2.PA9999.la 1234 2 10.PA9999.la 125 3.2.PA9999.ln 156
我试过了

两条缝都有可能失败

TypeError: 'Column' object is not callable
可能类似于

您也可以使用spark udf

每当需要使用另一列中的值修改数据框条目时,可以应用该解决方案:

from pyspark.sql.functions import udf
from pyspark.sql.types import StringType

pd_input = pd.DataFrame({'address': ['2.PA1234.la','10.PA125.la','2.PA156.ln'],
             'st':['1234','125','156']})

spark_df = sparkSession.createDataFrame(pd_input)


replace_udf = udf(lambda address, st: address.replace(st,'9999'), StringType())

spark_df.withColumn('adress_new',replace_udf(col('address'),col('st'))).show()
输出:

+-----------+----+------------+
|     adress|  st|  adress_new|
+-----------+----+------------+
|2.PA1234.la|1234| 2.PA9999.la|
|10.PA125.la| 125|10.PA9999.la|
| 2.PA156.ln| 156| 2.PA9999.ln|
+-----------+----+------------+

正则表达式:
(?非常感谢@S.Jovan,它按预期工作:)
+-----------+----+------------+
|     adress|  st|  adress_new|
+-----------+----+------------+
|2.PA1234.la|1234| 2.PA9999.la|
|10.PA125.la| 125|10.PA9999.la|
| 2.PA156.ln| 156| 2.PA9999.ln|
+-----------+----+------------+