Bei Betrachtung der neuen Spark-Datenrahmen-API ist unklar, ob es möglich ist, Datenrahmenspalten zu ändern.
Wie würde ich mich über einen Wert in der Zeile zu ändern x
Spalte y
eines Datenrahmens?
In pandas
diesem wäredf.ix[x,y] = new_value
Bearbeiten: 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 ersetzen möchten, der auf einer Bedingung basiert, wie z 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 die neue Spalte denselben Namen wie die alte Spalte haben soll, können Sie den zusätzlichen Schritt hinzufügen:
df = df.drop('update_col').withColumnRenamed('new_column_name', 'update_col')