【发布时间】:2020-10-29 03:09:38
【问题描述】:
我正在寻找最有效的方法来转换我的原始数据框中可能存在或不存在的大量变量(100 多个)。列值为 1 个字节。如果该值不为 NULL,则使用值 1 重新编码。如果为 NULL,则使用值 0 重新编码。然后将列重命名为以“U_”开头。
我的代码有效,但效率极低。我是 Pyspark 编码的新手,可以使用一些指针。
update_vars_list = [ 'Col_1','Col_2','Col_3',...'Col_n]
for var in update_vars_list :
if var in original_df.columns:
original_df= original_df.withColumn(('U_'+var),f.when(f.col(var).isNotNull(),1).otherwise(0)).drop(var)
例子:
【问题讨论】:
-
多次调用
withColumn非常慢。而是使用select进行所有转换,然后简单地使用alias重命名您的列。查看this answer