Ответ 1
Предположим, что мы работаем со следующим представлением данных (два столбца, k
и v
, где k
содержит три записи, два уникальных:
+---+---+
| k| v|
+---+---+
|foo| 1|
|bar| 2|
|foo| 3|
+---+---+
С кадром Pandas:
import pandas as pd
p_df = pd.DataFrame([("foo", 1), ("bar", 2), ("foo", 3)], columns=("k", "v"))
p_df['k'].unique()
Это возвращает ndarray
, т.е. array(['foo', 'bar'], dtype=object)
Вы запросили альтернативу dataframe для pyspark для Pandas df ['col']. unique() ". Теперь, учитывая следующий пакет данных Spark:
s_df = sqlContext.createDataFrame([("foo", 1), ("bar", 2), ("foo", 3)], ('k', 'v'))
Если вы хотите получить тот же результат от Spark, т.е. ndarray
, используйте toPandas()
:
s_df.toPandas()['k'].unique()
В качестве альтернативы, если вам не нужен ndarray
, а просто нужен список уникальных значений столбца k
:
s_df.select('k').distinct().rdd.map(lambda r: r[0]).collect()
Наконец, вы также можете использовать понимание списка следующим образом:
[i.k for i in s_df.select('k').distinct().collect()]