首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >获取一组中最少的行集

获取一组中最少的行集
EN

Stack Overflow用户
提问于 2018-09-19 12:05:17
回答 2查看 238关注 0票数 1

我有一个带有值的数据

代码语言:javascript
代码运行次数:0
运行
复制
#+-------+---------+-----+
#|name1  |name 2   |score|
#+-------+---------+-----+
#| abcdef| abcghi  |    3|
#| abcdef| abcjkl  |    3|
#| abcdef| abcyui  |    3|
#| abcdef| abrtyu  |    4|
#| pqrstu| pqrswe  |    2|
#| pqrstu| pqrsqw  |    2|
#| pqrstu| pqrzxc  |    3|
#+-------+---------+-----+

我需要按name1分组,选择得分最少的行。

据我所知,我可以在name1上的groupby之后选择最上面的行,并按升序对得分进行排序,并选择第一行。我这么做是靠

代码语言:javascript
代码运行次数:0
运行
复制
joined_windows = Window().partitionBy("name1").orderBy(col("score").asc())
result = joined_df.withColumn("rn", row_number().over(joined_windows)).where(col("rn") == 1).drop("rn")

但是,我希望dataframe保存以下值(即,每组中得分最少的行集)。

代码语言:javascript
代码运行次数:0
运行
复制
#+-------+---------+-----+
#|name1  |name 2   |score|
#+-------+---------+-----+
#| abcdef| abcghi  |    3|
#| abcdef| abcjkl  |    3|
#| abcdef| abcyui  |    3|
#| pqrstu| pqrswe  |    2|
#| pqrstu| pqrsqw  |    2|
#+-------+---------+-----+
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-19 12:22:49

对于持有几个值,可以使用这样的代码:

代码语言:javascript
代码运行次数:0
运行
复制
val joined_windows = Window.partitionBy("name1")
val result = df.withColumn("rn", min($"score").over(joined_windows))
result.where($"rn"===$"score").drop("rn").show(false)

输出:

代码语言:javascript
代码运行次数:0
运行
复制
+------+------+-----+
|name1 |name 2|score|
+------+------+-----+
|abcdef|abcghi|3    |
|abcdef|abcjkl|3    |
|abcdef|abcyui|3    |
|pqrstu|pqrswe|2    |
|pqrstu|pqrsqw|2    |
+------+------+-----+
票数 1
EN

Stack Overflow用户

发布于 2018-09-19 13:37:21

您可以按两列分组:

代码语言:javascript
代码运行次数:0
运行
复制
df \
    .groupBy('name1', 'name2') \
    .agg(F.min('score'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52405485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档