Je voudrais effectuer quelques bases de base sur une colonne Spark Dataframe en remplaçant des sous-chaînes. Quel est le moyen le plus rapide de le faire?
Dans mon cas d'utilisation actuel, j'ai une liste d'adresses que je veux normaliser. Par exemple cette dataframe:
id address
1 2 foo lane
2 10 bar lane
3 24 pants ln
Deviendrait
id address
1 2 foo ln
2 10 bar ln
3 24 pants ln
Pour Spark 1.5 ou version ultérieure, vous pouvez utiliser le package functions :
from pyspark.sql.functions import *
newDf = df.withColumn('address', regexp_replace('address', 'lane', 'ln'))
Explication rapide:
withColumn
est appelée pour ajouter (ou remplacer, si le nom existe) une colonne au cadre de données.regexp_replace
générera une nouvelle colonne en remplaçant toutes les sous-chaînes correspondant au modèle.Pour scala
import org.Apache.spark.sql.functions.regexp_replace
import org.Apache.spark.sql.functions.col
data.withColumn("addr_new", regexp_replace(col("addr_line"), "\\*", ""))