Existe-t-il un moyen plus agréable de préfixer ou de renommer toutes les colonnes ou plusieurs en même temps d'un nom SparkSQL DataFrame
donné en appelant plusieurs fois dataFrame.withColumnRenamed()
?
Un exemple serait si je veux détecter les modifications (en utilisant une jointure externe complète). Il me reste alors deux DataFrame
name__s avec la même structure.
Je suggère d'utiliser la méthode select () pour effectuer cela. En fait, la méthode withColumnRenamed () utilise select () seule. Voici un exemple comment renommer plusieurs colonnes:
import org.Apache.spark.sql.functions._
val someDataframe: DataFrame = ...
val initialColumnNames = Seq("a", "b", "c")
val renamedColumns = initialColumnNames.map(name => col(name).as(s"renamed_$name"))
someDataframe.select(renamedColumns : _*)
Je viens de trouver la réponse
df1_r = df1.select(*(col(x).alias(x + '_df1') for x in df1.columns))
at stackoverflow here (voir la fin de la réponse acceptée)
or (a <- 0 to newsales.columns.length - 1)
{
var new_c = newsales.columns(a).replace('(','_').replace(')',' ').trim
newsales_var = newsales.withColumnRenamed(newsales.columns(a),new_c)
}