Supposons que nous travaillons avec la représentation suivante des données (deux colonnes, k
et v
, où k
contient trois entrées, deux uniques:
+---+---+
| k| v|
+---+---+
|foo| 1|
|bar| 2|
|foo| 3|
+---+---+
Avec un dataframe Pandas:
import pandas as pd
p_df = pd.DataFrame([("foo", 1), ("bar", 2), ("foo", 3)], columns=("k", "v"))
p_df['k'].unique()
Cela renvoie un ndarray
, c'est-à-dire array(['foo', 'bar'], dtype=object)
Vous avez demandé une "alternative de dataframe pyspark pour pandas df['col'].unique()". Maintenant, étant donné le dataframe Spark suivant:
s_df = sqlContext.createDataFrame([("foo", 1), ("bar", 2), ("foo", 3)], ('k', 'v'))
Si vous voulez le même résultat avec Spark, c'est-à-dire un ndarray
, utilisez toPandas()
:
s_df.toPandas()['k'].unique()
Alternativement, si vous n'avez pas besoin d'un ndarray
spécifiquement et que vous voulez 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 compréhension de liste comme suit:
[i.k for i in s_df.select('k').distinct().collect()]