如何对数据框使用过滤器、计数、排序、最大值和分组?
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()
我正在使用 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()