在Pyspark dataframe中按groupby后的计数、求和进行过滤

有一个像这样的pyspark 

data = [("1", "a"), ("2", "a"), ("3", "b"), ("4", "a")]
df = spark.createDataFrame(data).toDF(*("id", "name"))
df.show()
+---+----+
| id|name|
+---+----+
|  1|   a|
|  2|   a|
|  3|   b|
|  4|   a|
+---+----+

按这个dataframe的名称列分组 

df.groupBy("name").count().show()
+----+-----+
|name|count|
+----+-----+
|   a|    3|
|   b|    1|
+----+-----+

from pyspark.sql import functions as F

data = [("1", "a"), ("2", "a"), ("3", "b"), ("4", "a")]
df = spark.createDataFrame(data).toDF(*("id", "name"))
df.groupBy("name").count().where(F.col('count') < 3).show()

F是函数的别名,您可以使用任何需要的标识符,但它通常写为Ffunc,这只是个人习惯。

result:

+----+-----+
|name|count|
+----+-----+
|   b|    1|
+----+-----+
# 可以多个列名同时使用groupby
duplicates_df = sc.sql(hive_read).groupBy("t", "g").count()

# 筛选出重复次数大于50的行
duplicates_df = duplicates_df.filter(duplicates_df["count"] > 50)

# 按照 count 列进行降序排序
sorted_duplicates_df = duplicates_df.orderBy(duplicates_df["count"].desc())

# 提取所有重复的t值,即满足上述重复条件的,发生过重复情况的t值
duplicate_tids = duplicates_df.select("t","g").distinct()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值