如何对数据框使用过滤器、计数、排序、最大值和分组?

How to use filter, count, sort, max and groupby with a dataframe?

我正在使用 pyspark 尝试使用 filter、group by、sort、count 和 max 方法来过滤数据框中的数据。我有这个 SQL select,我试图用 pyspark 复制它并得到相同的结果:

select lab_org, COUNT(DISTINCT lab_id) as lab, MAX(day) as frequency, SUM(total) as total FROM lab_data GROUP BY lab_org ORDER BY frequency, lab, total DESC

示例输出如下所示:

lab_org lab frequency   total
370     133 556         3386.78
1031    146 557         4232.12
2092    122 559         2290.54
1468    81  568         4131.73
2254    80  569         1270.35

我是 pyspark 的新手,不知道从哪里开始。你能帮忙吗?

谢谢

看看这个。 Pyspark 不支持组聚合的不同计数,但是仍然可以通过以下方式获得:

df.select('lab_id').distinct().count()

除此之外,我已经尝试接近您的查询:

new_df = df.groupby(['lab_org']).agg({'lab_id':'count', 'frequency':'max', 'total':'sum'}).orderBy(['max(frequency)', 'count(lab_id)', 'sum(total)'])
new_df.show()