代码之家  ›  专栏  ›  技术社区  ›  Steven

删除df.drop的for循环[重复]

  •  0
  • Steven  · 技术社区  · 8 年前

    这个问题已经有了答案:

    我正在使用Pyspark 2.0。

    我的代码是:

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

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

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   vvg    8 年前

    首先-不用担心。即使在循环中执行,也不意味着spark对每个drop执行单独的查询。查询是惰性的,因此它将首先构建一个大的执行计划,然后立即执行所有内容。(但你可能知道)

    但是,如果您仍然希望在2.0api中去掉循环,id将使用与您实现的相反的内容:选择only needed而不是删除列:

    df.select([col for col in df.columns if col not in to_exclude])
    
    推荐文章