Python 什么';删除所有值相同(例如0)的pyspark列的最快方法是什么?
我有一个庞大的pyspark数据帧,我需要从数据帧中删除所有都是0的列。我目前正在为此使用以下代码: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
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个负数)关于
描述
?关于描述
?