Je recherche un moyen de sélectionner les colonnes de mon cadre de données dans pyspark. Pour la première ligne, je sais que je peux utiliser df.first()
mais je ne suis pas sûr des colonnes étant donné qu'elles ont elles n'ont pas de nom de colonne.}
J'ai 5 colonnes et je veux parcourir chacune d'entre elles.
+--+---+---+---+---+---+---+
|_1| _2| _3| _4| _5| _6| _7|
+--+---+---+---+---+---+---+
|1 |0.0|0.0|0.0|1.0|0.0|0.0|
|2 |1.0|0.0|0.0|0.0|0.0|0.0|
|3 |0.0|0.0|1.0|0.0|0.0|0.0|
Essayez quelque chose comme ça:
df.select([c for c in df.columns if c in ['_2','_4','_5']]).show()
Deux premières colonnes et 5 rangées
df.select(df.columns[:2]).take(5)
Utilisez df.schema.names
:
spark.version
# u'2.2.0'
df = spark.createDataFrame([("foo", 1), ("bar", 2)])
df.show()
# +---+---+
# | _1| _2|
# +---+---+
# |foo| 1|
# |bar| 2|
# +---+---+
df.schema.names
# ['_1', '_2']
for i in df.schema.names:
# df_new = df.withColumn(i, [do-something])
print i
# _1
# _2
Tout d'abord, votre schéma est créé par erreur lors de l'importation depuis MySQL ou une autre base de données . Vous pouvez utiliser le curseur du dictionnaire pour le modifier
cursor = conn.cursor(MySQLdb.cursors.DictCursor)