Comment obtenir le nom de la colonne dataframe dans pyspark?
Dans les pandas, ce qui peut être fait par colonne.nom.
Mais comment faire la même chose lors de sa colonne de spark dataframe?
par exemple, Le programme appelant a une étincelle dataframe: spark_df
>>> spark_df.columns
['admit', 'gre', 'gpa', 'rank']
Ce programme appelle ma fonction: my_function(spark_df['rang'])
Dans my_function, j'ai besoin du nom de la colonne c'est à dire "rang"
Si c'était pandas dataframe, nous pouvons l'utiliser à l'intérieur de my_function
>>> pandas_df['rank'].name
'rank'
source d'informationauteur Kaushik Acharya
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir le nom à partir du schéma en faisant
De l'impression du schéma peut être utile pour visualiser ainsi
Le seul moyen est de passer une sous-jacents au niveau de la JVM.
C'est aussi la façon dont il est converti en
str
dans le pyspark code lui-même.De pyspark/sql/column.py:
Si vous voulez les noms de colonne de votre dataframe vous pouvez utiliser le pyspark.sql classe. Je ne suis pas sûr que le SDK supporte explicitement de l'indexation d'un DF par nom de colonne. J'ai reçu ce traceback:
>>> df.columns['High']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
Cependant, appelant les colonnes de la méthode sur votre dataframe. Lequel vous l'avez fait, vous obtiendrez une liste de noms de colonnes:
df.columns
sera de retour['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']
Si vous voulez la colonne type de données, vous pouvez appeler le dtypes méthode:
df.dtypes
sera de retour[('Date', 'timestamp'), ('Open', 'double'), ('High', 'double'), ('Low', 'double'), ('Close', 'double'), ('Volume', 'int'), ('Adj Close', 'double')]
Si vous voulez une colonne particulière, vous aurez besoin de l'accès par index:
df.columns[2]
sera de retour'High'