Обновление столбца данных в спарк

Глядя на новый API-интерфейс Spark Dataframe, неясно, можно ли изменить столбцы DataFrame.

Как бы я изменил значение в строкеx колонкаy кадра данных?

Вpandas это было быdf.ix[x,y] = new_value

Изменить: Консолидируя то, что было сказано ниже, вы не можете изменить существующий фрейм данных, так как он неизменен, но вы можете вернуть новый фрейм данных с желаемыми изменениями.

Если вы просто хотите заменить значение в столбце на основе условия, например,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)

Если вы хотите выполнить какую-либо операцию со столбцом и создать новый столбец, который добавляется в кадр данных:

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

Если вы хотите, чтобы новый столбец имел то же имя, что и старый столбец, вы можете добавить дополнительный шаг:

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

Ответы на вопрос(4)

Ваш ответ на вопрос