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

Geo*_*eRF 9 dataframe apache-spark apache-spark-sql pyspark pyspark-sql

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

n = 3
drop_lst = ['a' + str(i) for i in range(n)]
df.drop(drop_lst)
Run Code Online (Sandbox Code Playgroud)

但上述情况并不奏效.

注意:

我的用例需要一个动态列表.

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

df.drop('a0','a1','a2')
Run Code Online (Sandbox Code Playgroud)

如何使drop功能与列表一起使用?

Spark 2.2似乎没有这种功能.有没有办法让它不使用select()

mto*_*oto 32

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

df.drop(*drop_lst)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!* 运算符有什么作用?它的意义何在? (3认同)
  • 如果将它放在左侧,即星形解包迭代器的内容,即.它会生成列表中的各个元素. (3认同)
  • 要回答我自己的问题:我刚刚检查了一下,在我的版本(1.6.2)中,此处描述的list方法不起作用。 (2认同)

vaq*_*han 12

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

df.drop("col1","col11","col21")
Run Code Online (Sandbox Code Playgroud)