Подтвердить что ты не робот

Показать различные значения столбцов в pyspark dataframe: python

Пожалуйста, предложите альтернативу pyspark dataframe для Pandas df['col'].unique() Unique df['col'].unique().

Я хочу перечислить все уникальные значения в столбце pyspark dataframe.

Не тип SQL (зарегистрируйте шаблон, а затем запрос SQL для различных значений).

Также мне не нужно groupby->countDistinct, вместо этого я хочу проверить различные значения в этом столбце.

4b9b3361

Ответ 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()]

Ответ 2

Это должно помочь получить различные значения столбца:

df.select('column1').distinct().show()

Ответ 3

Вы можете использовать df.dropDuplicates(['col1','col2']) чтобы получить только отдельные строки на основе colX в массиве.

Ответ 4

collect_set может помочь получить уникальные значения из данного столбца pyspark.sql.DataFrame df.select(F.collect_set("column").alias("column")).first()["column"]