我正在尝试将二进制编码功能添加到PySpark数据框中,并想知道这样做的最快方法。
例如,给定一个带有cols {a,b,c}的DataFrame,我想创建新的cols {is_a_string,is_a_float,...},其中每个col的值将是1.0或0.0,具体取决于col a的值的数据类型。
到目前为止,我已经尝试了UDF。它们工作正常,但速度很慢。这似乎是一个简单的任务,我应该可以使用内置的Spark函数来完成,但是我找不到如何做到的。
一个例子是:
表可能看起来像
a | b | c
r1 | 1 | "" | NULL
r2 | ""| "" | 1
我们想把它变成这样:
a | b | c | is_a_int | is_a_string | is_a_null
r1 | 1 | "" | NULL | 1.0 | 0.0 | 0.0
r2 | ""| "" | 1 | 0.0 | 1.0 | 0.0
带有is_b_int,is_b_string等...也作为新列