Обновление столбца данных в спарк
Глядя на новый 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')