【发布时间】:2017-09-30 10:00:52
【问题描述】:
我有一个庞大的 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 列的最快方法是什么?
【问题讨论】:
-
describe呢?
标签: python performance filter pyspark