在Pyspark中作为预处理步骤,我试图从包含低于一定数量的非零值的RDD中过滤出数据行。目前我们运行一个被调用然后进行比较的总和。 (此时无/ na已填入0)
def clean_features(row: Row, nonzero_feature_count) -> bool:
feature_count = row.features.sum()
# arbitary filter on how many rows we use
if feature_count > nonzero_feature_count:
return True
return False
问题不是我们所有的列都有二进制值。有些可能高达15-20,这显然会摒弃我们试图过滤的方式。
我们如何有效地计算非零数或0数?
因此,对于行[1,3,0,0,3,1]
,我们要么能够计算:' 4'对于行中的#非零值,或对于行中的#零值为2。目前,当我们使用RDD的那一行时,我们计算出8。