web-dev-qa-db-fra.com

Comment supprimer plusieurs noms de colonne donnés dans une liste de Spark DataFrame?

J'ai une liste dynamique qui est créée en fonction de la valeur de n.

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

Mais ce qui précède ne fonctionne pas.

Remarque:

Mon cas d'utilisation nécessite une liste dynamique.

Si je fais juste ci-dessous sans liste ça marche

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

Comment faire fonctionner la fonction drop avec list?

Spark 2.2 ne semble pas avoir cette capacité. Existe-t-il un moyen de le faire fonctionner sans utiliser select()?

8
GeorgeOfTheRF

Vous pouvez utiliser l'opérateur * Pour passer le contenu de votre liste en arguments à drop():

df.drop(*drop_lst)
29
mtoto

Vous pouvez donner le nom de la colonne sous forme de liste séparée par des virgules, par exemple.

df.drop("col1","col11","col21")
3
vaquar khan

Voici comment supprimer le nombre spécifié de colonnes consécutives dans scala:

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

slice prend deux paramètres: star index et end index.

0
Abraham