Updating einer Datenrahmenspalte in spark

Betrachtet man die neue Spark-Dataframe-API, ist unklar, ob es möglich ist, Dataframe-Spalten zu ändern.

ie würde ich vorgehen, um einen Wert in der Zeile zu änderx Säuley eines Datenrahmens?

Impandas das wäredf.ix[x,y] = new_value

Edit: Wenn Sie das unten Gesagte konsolidieren, können Sie den vorhandenen Datenrahmen nicht ändern, da er unveränderlich ist. Sie können jedoch einen neuen Datenrahmen mit den gewünschten Änderungen zurückgeben.

Wenn Sie nur einen Wert in einer Spalte basierend auf einer Bedingung ersetzen möchten, z. B.np.where:

from pyspark.sql import functions as F

update_func = (F.when(F.col('update_col') == replace_val, new_value)
                .otherwise(F.col('update_col')))
df = df.withColumn('new_column_name', update_func)

Wenn Sie eine Operation für eine Spalte ausführen und eine neue Spalte erstellen möchten, die dem Datenrahmen hinzugefügt wird:

import pyspark.sql.functions as F
import pyspark.sql.types as T

def my_func(col):
    do stuff to column here
    return transformed_value

# if we assume that my_func returns a string
my_udf = F.UserDefinedFunction(my_func, T.StringType())

df = df.withColumn('new_column_name', my_udf('update_col'))

Wenn Sie möchten, dass die neue Spalte denselben Namen wie die alte Spalte hat, können Sie den folgenden zusätzlichen Schritt hinzufügen:

df = df.drop('update_col').withColumnRenamed('new_column_name', 'update_col')

Antworten auf die Frage(8)

Ihre Antwort auf die Frage