Python 如何为具有最大值的行选择所有列
我需要通过按“ID”分组从数据帧中选择所有列。但当我这样做时,我只得到ID和“值”。我需要所有栏目Python 如何为具有最大值的行选择所有列,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我需要通过按“ID”分组从数据帧中选择所有列。但当我这样做时,我只得到ID和“值”。我需要所有栏目 a=df.groupby(df['id']).agg({"date": "max"} a.show() 这仅选择“id”和“日期”列。还有其他栏目。如何为日期中的最大值选择所有列。在spark中,有两种方法可以将其与以前的数据帧连接起来,如下所示: a=df.groupby(df['id']).agg({"date": "max"} df = df.joi
a=df.groupby(df['id']).agg({"date": "max"}
a.show()
这仅选择“id”和“日期”列。还有其他栏目。如何为日期中的最大值选择所有列。在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(
"max",
(F.max(F.col("date")).over(window))
)
a.show()
或者像这样使用窗口分区:
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(
"max",
(F.max(F.col("date")).over(window))
)
a.show()
我更喜欢第一个方法,因为即使在联接之后,它的成本也更低。第二个方法的可能重复
TypeError:withColumn()缺少1个必需的位置参数:“col”
感谢您指出它,编辑了解决方案。withColumn接受两个位置参数,第一个是列的名称,另一个是新列的表达式