Nehmen wir an, wir arbeiten mit der folgenden Darstellung von Daten (zwei Spalten k
und v
, wo k
drei Einträge enthalten, zwei eindeutige:
+---+---+
| k| v|
+---+---+
|foo| 1|
|bar| 2|
|foo| 3|
+---+---+
Mit einem Pandas-Datenrahmen:
import pandas as pd
p_df = pd.DataFrame([("foo", 1), ("bar", 2), ("foo", 3)], columns=("k", "v"))
p_df['k'].unique()
Dies gibt ein zurück ndarray
, dharray(['foo', 'bar'], dtype=object)
Sie haben nach einer "pyspark-Datenrahmenalternative für pandas df ['col']. Unique ()" gefragt. Angesichts des folgenden Spark-Datenrahmens:
s_df = sqlContext.createDataFrame([("foo", 1), ("bar", 2), ("foo", 3)], ('k', 'v'))
Wenn Sie dasselbe Ergebnis von Spark wünschen , dh an ndarray
, verwenden Sie toPandas()
:
s_df.toPandas()['k'].unique()
Alternativ, wenn Sie keine ndarray
spezielle benötigen und nur eine Liste der eindeutigen Werte der Spalte wünschen k
:
s_df.select('k').distinct().rdd.map(lambda r: r[0]).collect()
Schließlich können Sie ein Listenverständnis auch wie folgt verwenden:
[i.k for i in s_df.select('k').distinct().collect()]