Python 什么';删除所有值相同(例如0)的pyspark列的最快方法是什么?

Python 什么';删除所有值相同(例如0)的pyspark列的最快方法是什么?,python,performance,filter,pyspark,Python,Performance,Filter,Pyspark,我有一个庞大的pyspark数据帧,我需要从数据帧中删除所有都是0的列。我目前正在为此使用以下代码: columns = list(masterdata_raw.schema.names) zero_col = [] for col_ in columns: col_max = masterdata_raw.agg({col_: "max"}).collect()[0] col_min = masterdata_raw.agg({col_: "min"}).collect()[0

我有一个庞大的pyspark数据帧,我需要从数据帧中删除所有都是0的列。我目前正在为此使用以下代码:

columns = list(masterdata_raw.schema.names)
zero_col = []
for col_ in columns:
    col_max = masterdata_raw.agg({col_: "max"}).collect()[0]
    col_min = masterdata_raw.agg({col_: "min"}).collect()[0]
    if col_max == 0 and col_min == 0:
        zero_col = zero_col.append(col_)

#*********removing the features found above************
for col_ in zero_col:
    masterdata_raw = masterdata_raw.drop(col_)
不幸的是,这会运行两次聚合,
.collect
的结果也会运行两次…速度很慢

我已经尝试合并聚合,但是因为我试图在一个字典中聚合相同的列名,所以我只得到一个结果。我想我本可以添加另一个名称不同的列,然后同时聚合这两个列,但这似乎效率也很低

过滤pyspark中所有
0
列的最快方法是什么?

为什么不

for col_ in columns:
     if masterdata_raw.groupBy().sum(col_).collect() == 0
        masterdata_raw.drop(col_)
为什么不

for col_ in columns:
     if masterdata_raw.groupBy().sum(col_).collect() == 0
        masterdata_raw.drop(col_)

这不一定行得通。(例如,一列50个负数和50个负数)这不一定有效。(例如,一列50个负数和50个负数)关于
描述
?关于
描述