python - PySpark - Groupby 后删除行?
问题描述
我的火花是3.0版
我已经通过 groupBy() 聚合了数据。我想创建一个函数和一个阈值,如果数据量<200(这将是阈值),那么我想从主表中删除类别“C”。
我将如何在 PySpark 上做到这一点?我想过创建一个列表来附加“C”,但我不知道该怎么做=/
图 2 是预期的输出。有人能帮我吗?
解决方案
尝试使用groupBy
并聚合以获取sum
() ,然后collect_list
为类别的所有值分解数组。
Example:
df.show()
#+----+----+
#|col1|col2|
#+----+----+
#| A| 250|
#| A| 250|
#| A| 50|
#| B| 250|
#| B| 250|
#| B| 50|
#| C| 5|
#| C| 5|
#| C| 10|
#+----+----+
from pyspark.sql.functions import *
df.groupBy("col1").agg(sum(col("col2")).alias("count"),collect_list(col("col2")).alias("col2")).\
filter(col("count") >200).\
select("col1",explode("col2").alias("col2")).\
show()
#+----+----+
#|col1|col2|
#+----+----+
#| B| 250|
#| B| 250|
#| B| 50|
#| A| 250|
#| A| 250|
#| A| 50|
#+----+----+
推荐阅读
- php - 带有php函数的wordpress中的404标头
- python - TemplateDoesNotExist at /travello
- python - Python计算拆分句子的单词?
- java - 剪刀石头布游戏,我的代码可能缺少某些东西
- java - 在 spring-jpa 中使用 JPQL 删除 2000 条记录的最佳方法
- machine-learning - 为自定义环境调整稳定的基线代理
- npm - 我需要实现一个功能以在角度应用程序中使用热敏打印机。我试过很遗憾没有成功
- r - Tinytex 无法安装缺少的 LaTeX 包,因为它已经安装了
- google-cloud-platform - GCP:谷歌云平台数据库全量备份
- xamarin.android - AlarmManager 并每 10 秒重复一次