web-dev-qa-db-fra.com

Pyspark remplace les chaînes dans Spark dataframe

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
21
Luke

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:

  • La fonction withColumn est appelée pour ajouter (ou remplacer, si le nom existe) une colonne au cadre de données.
  • La fonction regexp_replace générera une nouvelle colonne en remplaçant toutes les sous-chaînes correspondant au modèle.
58
Daniel de Paula

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"), "\\*", ""))
1
Achyuth