看看新的火花数据框架 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')