Załóżmy, że pracujemy z następującą reprezentacją danych (dwie kolumny k
i v
, jeśli k
zawiera trzy wpisy, dwie unikalne):
+---+---+
| k| v|
+---+---+
|foo| 1|
|bar| 2|
|foo| 3|
+---+---+
Z ramką danych Pandas:
import pandas as pd
p_df = pd.DataFrame([("foo", 1), ("bar", 2), ("foo", 3)], columns=("k", "v"))
p_df['k'].unique()
Zwraca to ndarray
, tjarray(['foo', 'bar'], dtype=object)
Poprosiłeś o „alternatywną ramkę danych pyspark dla pandas df ['col']. Unique ()”. Teraz, biorąc pod uwagę następującą ramkę danych Spark:
s_df = sqlContext.createDataFrame([("foo", 1), ("bar", 2), ("foo", 3)], ('k', 'v'))
Jeśli chcesz uzyskać ten sam wynik ze Sparka, tj. ndarray
Użyj toPandas()
:
s_df.toPandas()['k'].unique()
Alternatywnie, jeśli nie potrzebujesz ndarray
konkretnego i po prostu chcesz listę unikalnych wartości kolumny k
:
s_df.select('k').distinct().rdd.map(lambda r: r[0]).collect()
Na koniec możesz również użyć rozumienia listy w następujący sposób:
[i.k for i in s_df.select('k').distinct().collect()]