Взглянув на новую диаграмму api-диаграммы искры, неясно, можно ли изменять столбцы данных.
Как мне изменить значение в строке 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')