Atualizando uma coluna de quadro de dados no spark

Observando a nova API do spark dataframe, não está claro se é possível modificar as colunas do dataframe.

Como eu alteraria um valor na linhax colunay de um quadro de dados?

Nopandas este seriadf.ix[x,y] = new_value

Edit: consolidando o que foi dito abaixo, você não pode modificar o quadro de dados existente, pois é imutável, mas pode retornar um novo quadro de dados com as modificações desejadas.

Se você deseja apenas substituir um valor em uma coluna com base em uma condição, comonp.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)

Se você deseja executar alguma operação em uma coluna e criar uma nova coluna que é adicionada ao quadro de dados:

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'))

Se você deseja que a nova coluna tenha o mesmo nome da coluna antiga, adicione a etapa adicional:

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

questionAnswers(4)

yourAnswerToTheQuestion