如何从Spark DataFrame中删除列表中给出的多个列名?

时间:2017-12-15 10:58:22

标签: apache-spark dataframe pyspark apache-spark-sql pyspark-sql

我有一个动态列表,它是根据n的值创建的。

n = 3
drop_lst = ['a' + str(i) for i in range(n)]
df.drop(drop_lst)

但上述情况无效。

注意

我的用例需要动态列表。

如果我只是在没有列表的情况下执行以下操作

df.drop('a0','a1','a2')

如何使drop功能与list一起使用?

Spark 2.2似乎没有此功能。有没有办法让它工作而不使用select()

4 个答案:

答案 0 :(得分:22)

您可以使用*运算符将列表内容作为参数传递给drop()

df.drop(*drop_lst)

答案 1 :(得分:2)

您可以将列名指定为以逗号分隔的列表,例如

df.drop("col1","col11","col21")

答案 2 :(得分:0)

这是如何在scala中删除指定数量的连续列:

val ll = dfwide.schema.names.slice(1,5)
dfwide.drop(ll:_*).show

切片具有两个参数:星形索引和结束索引。

答案 3 :(得分:-1)

您可以使用drop(*cols) 2种方式。

  1. df.drop('age').collect()
  2. df.drop(df.age).collect()
  3. 查看官方文档DataFrame.drop