我需要为我的spark数据框中的每一行创建一个名为sim_count
的列,其值是该数据框中与当前条件下基于某些条件匹配的所有其他行的计数。使用row
时是否可以访问when
的值?
像这样可能吗?我已经使用UDF实现了此逻辑,但是数据帧的rdd映射的序列化非常昂贵,我正在尝试看看是否有更快的替代方法来找到此计数值。
修改
<Row's col_1 val>
是指我正在计算其计数的外部范围行,而不是df.where
内部的内部范围行。例如,我知道这是不正确的语法,但是我正在寻找类似的东西:
df.withColumn('sim_count',
f.when(
f.col("col_1").isNotNull(),
(
df.where(
f.col("price_list").between(f.col("col1"), f.col("col2"))
).count()
)
).otherwise(f.lit(None).cast(LongType()))
)