首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择最大值行的所有列

如何选择最大值行的所有列
EN

Stack Overflow用户
提问于 2018-09-06 22:56:33
回答 1查看 5.9K关注 0票数 3

我需要通过对'ID‘进行分组来选择数据帧中的所有列。但是当我这样做的时候,我只能得到ID和'value‘。我需要所有的栏目

代码语言:javascript
复制
a=df.groupby(df['id']).agg({"date": "max"}
a.show()

这只选择'id‘和'date’列。还有其他列。如何选择日期中最大值的所有列。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-07 03:07:34

在spark中,有两种方式可以将其与之前的数据帧连接起来,如下所示:

代码语言:javascript
复制
a=df.groupby(df['id']).agg({"date": "max"}
df = df.join(
    a,
    on = "id",
    how = "inner"
)
df.show()

或者像这样使用窗口分区:

代码语言:javascript
复制
from pyspark.sql import Window
import pyspark.sql.functions as F
window = Window.partitionBy("id")
a = df.withColumn(
    "max",
    (F.max(F.col("date")).over(window))
)
a.show() 

我会说更喜欢第一个,因为即使在加入之后,它的成本也更低。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52206946

复制
相关文章

相似问题

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