首页 > 解决方案 > 如何在不硬编码列名的情况下获取 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()]

这给了我错误。

标签: listapache-sparkpyspark

解决方案


您应该使用x[0],而不是x.p_k因为返回可以使用但不能collect访问的行对象[0].p_k

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

推荐阅读