是否有一种方法可以将“ Col1”中的指定值替换为新值。 假设我有一个要替换的值列表
from: [1,2,3]
to: ['one','two','three']
我知道我可以使用.withColumn并说when 1 then "one" otherwise
等,但是当我的值列表很长时,这不是很方便。与udf相同。我假设应该有某种mapValues函数。
答案 0 :(得分:0)
您可以创建一个与旧值映射的新值的数据框,然后进行联接。
如果map_df
有密钥对,而orig_df
是原始数据帧,则为
from pyspark.sql.functions import *
new_df = orig_df.join(map_df, 'old_key', 'left')
new_df = new_df.withColumn('final_col', when(isnull(col('new_key')), col('old_key')).otherwise(col('new_key')))
new_df = new_df.drop('old_key').drop('new_key').withColumnRenamed('final_col', 'old_key')
new_df
是您的数据框。