Как получить уникальное значение столбца в pyspark dataframe без жесткого кодирования имени столбца?

#list #apache-spark #pyspark

#Список #apache-spark #pyspark

Вопрос:

Мне нужно извлечь все уникальные значения столбца, такие же, как pandas, без жесткого кодирования имени столбца. Не могли бы вы помочь, как это сделать?

Пример:

 p_k = 'Projectnum'
 

если я дам вот так:

 uni_val = [x.Projectnum for x in spark_df.select('Projectnum').distinct().collect()]
uni_val = ['SR0480-000']
 

но я не хочу жестко кодировать column_name. Поэтому я сохранил column_name в переменной p_k. Но как вставить в список?

 uni_val = [x.pk for x in spark_df.select(pk).distinct().collect()]
 

Это выдает ошибку.

Ответ №1:

Вы должны использовать x[0] , а не x.p_k потому collect , что возвращает объекты строк, к которым можно получить доступ с помощью [0] , но не .p_k

 uni_val = [x[0] for x in spark_df.select(p_k).distinct().collect()]