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