Afficher des valeurs de colonne distinctes dans pyspark dataframe: python
s'il vous Plaît suggérer pyspark dataframe alternative pour les Pandas df['col'].unique()
.
je veux énumérer toutes les valeurs uniques dans une colonne de dataframe de pyspark.
pas le chemin de type SQL (registertemplate puis requête SQL pour des valeurs distinctes).
aussi je n'ai pas besoin groupby->countDistinct
, à la place je veux vérifier des valeurs distinctes dans cette colonne.
3 réponses
supposons que nous travaillons avec la représentation suivante de données (deux colonnes, k
et v
, où k
contient trois entrées, deux unique:
+---+---+
| k| v|
+---+---+
|foo| 1|
|bar| 2|
|foo| 3|
+---+---+
Avec une Pandas dataframe:
import pandas as pd
p_df = pd.DataFrame([("foo", 1), ("bar", 2), ("foo", 3)], columns=("k", "v"))
p_df['k'].unique()
ceci renvoie un ndarray
, i.e. array(['foo', 'bar'], dtype=object)
vous avez demandé une " alternative de base de données pyspark pour pandas DF ['col'].unique.")( Maintenant, étant donné la base de données Spark suivante:
s_df = sqlContext.createDataFrame([("foo", 1), ("bar", 2), ("foo", 3)], ('k', 'v'))
si vous voulez le résultat de Spark, i.e. un ndarray
, utilisez toPandas()
:
s_df.toPandas()['k'].unique()
Sinon, si vous n'avez pas besoin d'un ndarray
spécifiquement et je veux juste une liste des valeurs uniques de la colonne k
:
s_df.select('k').distinct().rdd.map(lambda r: r[0]).collect()
enfin, vous pouvez également utiliser une liste de compréhension comme suit:
[i.k for i in s_df.select('k').distinct().collect()]
Cela devrait vous aider à obtenir les valeurs distinctes d'une colonne:
df.select('column1').distinct().show()
Vous pouvez utiliser df.dropDuplicates(['col1','col2'])
pour obtenir uniquement des lignes distinctes basées sur colX dans le tableau.