在pyspark数据框中显示不同的列值

214
使用pyspark dataframe,如何执行与Pandas中的df ['col'] .unique()等效的操作?
我想列出pyspark dataframe列中所有唯一的值。
不使用SQL(注册模板,然后对不同值进行SQL查询)。
也不需要groupby然后使用countDistinct,相反,我想检查该列中的唯一值。
15个回答

2

我认为这是最直观的(即类似于Pandas)语法:

new_df = df[['col']].distinct() # returns a one-column pyspark dataframe

或者

new_col = df[['col']].distinct()['col'] # returns a pyspark column object. 

所以要将它们转换为列表,您需要:

new_list = df[['col']].distinct().rdd.map(lambda row: row.col).collect()

2
这个一行代码将给你一个唯一值的列表:
unique_list = [i['col_name'] for i in df.select('col_name').distinct().collect()]

1

这可能会有帮助

df.select(collect_set("your column")).show()

0
假设您的原始DataFrame被称为df。那么,您可以使用以下代码:
df1 = df.groupBy('column_1').agg(F.count('column_1').alias('trip_count'))
df2 = df1.sort(df1.trip_count.desc()).show()

0

我做了这个:

unique_values = df.select("col").distinct().rdd.flatMap(lambda x: x).collect()
print(unique_values)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接