Comment exclure plusieurs colonnes dans Spark dataframe en Python
J'ai trouvé PySpark a une méthode appelée drop
mais il semble qu'il ne peut déposer une colonne à la fois. Toutes les idées sur la façon de déposer plusieurs colonnes en même temps?
df.drop(['col1','col2'])
TypeError Traceback (most recent call last)
<ipython-input-96-653b0465e457> in <module>()
----> 1 selectedMachineView = machineView.drop([['GpuName','GPU1_TwoPartHwID']])
/usr/hdp/current/spark-client/python/pyspark/sql/dataframe.pyc in drop(self, col)
1257 jdf = self._jdf.drop(col._jc)
1258 else:
-> 1259 raise TypeError("col should be a string or a Column")
1260 return DataFrame(jdf, self.sql_ctx)
1261
TypeError: col should be a string or a Column
source d'informationauteur MYjx
Vous devez vous connecter pour publier un commentaire.
Simplement avec
select
:ou si vous voulez vraiment utiliser
drop
puisreduce
devrait faire l'affaire:Note:
(différence de temps d'exécution):
Il devrait y avoir aucune différence quand il s'agit de données de temps de traitement. Bien que ces méthodes de générer des logiques différents plans plans physiques sont exactement les mêmes.
Il y a une différence toutefois, lorsque nous analysons côté conducteur code:
map
oureduce
drop
. Voir SPARK-11884 (Chute de plusieurs colonnes dans le DataFrame API) et SPARK-12204 (mettre en Œuvre méthode de la goutte pour DataFrame dans SparkR) pour plus d'informations.Dans PySpark 2.1.0 méthode
drop
prend en charge plusieurs colonnes:PySpark 2.0.2:
PySpark 2.1.0:
Exemple: