【问题标题】:remove for loop for df.drop [duplicate]删除 df.drop 的 for 循环 [重复]
【发布时间】:2018-06-04 09:50:46
【问题描述】:

我正在使用 pyspark 2.0。

我的代码是:

for col in to_exclude: 
    df = df.drop(col)

我不能直接df = df.drop(*to_exclude) 因为在 2.0 中,drop 方法一次只接受 1 列。

有没有办法更改我的代码并删除 for 循环?

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    首先 - 不用担心。即使您在循环中执行此操作,也并不意味着 Spark 会为每个 drop 执行单独的查询。查询是懒惰的,所以它会先建立一个大的执行计划,然后一次执行所有的事情。 (但无论如何你可能都知道)

    但是,如果您仍想摆脱 2.0 API 中的循环,我会采用与您实现的相反的方法:与其删除列,不如只选择需要的:

    df.select([col for col in df.columns if col not in to_exclude])
    

    【讨论】:

    • 当然,使用 select 而不是 drop... 效果很好。谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 2019-03-14
    • 2023-01-25
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多