我需要通过对“ ID”进行分组来从数据框中选择所有列。但是当我这样做时,我只会得到ID和“值”。我需要所有列
a=df.groupby(df['id']).agg({"date": "max"}
a.show()
这仅选择“ id”和“ date”列。还有其他列。如何为日期中的最大值选择所有列。
答案 0 :(得分:1)
在spark中,有两种方法可以将其与上一个数据帧连接起来,如下所示:
a=df.groupby(df['id']).agg({"date": "max"}
df = df.join(
a,
on = "id",
how = "inner"
)
df.show()
或像这样使用窗口分区:
from pyspark.sql import Window
import pyspark.sql.functions as F
window = Window.partitionBy("id")
a = df.withColumn(
(F.max(F.col("date")).over(window)).alias("max")
)
a.show()
我想选择第一个,因为即使加入后成本也较低。