Python Pyspark-使用函数添加具有值的新列-group by和max

Python Pyspark-使用函数添加具有值的新列-group by和max,python,pyspark,apache-spark-sql,pyspark-dataframes,Python,Pyspark,Apache Spark Sql,Pyspark Dataframes,我有一个场景,我必须从group by和max中获取结果,并创建一个新列: 例如,假设我有以下数据: |employee_name|department|state|salary| +-------------+----------+-----+------+ | James| Sales| NY| 90000| | Michael| Sales| NY| 86000| | Robert| Sales| CA| 81000|

我有一个场景,我必须从group by和max中获取结果,并创建一个新列:

例如,假设我有以下数据:

|employee_name|department|state|salary|
+-------------+----------+-----+------+
|        James|     Sales|   NY| 90000|
|      Michael|     Sales|   NY| 86000|
|       Robert|     Sales|   CA| 81000|
|        Maria|   Finance|   CA| 90000|
|        Raman|   Finance|   CA| 99000|
|        Scott|   Finance|   NY| 83000|
|         Jeff| Marketing|   CA| 80000|
|        Kumar| Marketing|   NY| 91000|
我的输出应该如下所示:

|employee_name|department|state|salary|max(salary by department)
+-------------+----------+-----+------+---
|        James|     Sales|   NY| 90000| 90000
|      Michael|     Sales|   NY| 86000| 90000
|       Robert|     Sales|   CA| 81000| 90000
|        Maria|   Finance|   CA| 85000| 88000
|        Raman|   Finance|   CA| 88000| 88000
|        Scott|   Finance|   NY| 83000| 88000
|         Jeff| Marketing|   CA| 80000| 91000
|        Kumar| Marketing|   NY| 91000| 91000
有什么建议吗?将非常有帮助。

将pyspark.sql.functions导入为F
结果=df.join(df.groupBy('department').agg(F.max('salary'))。别名('max\u salary'))。选择('department','max\u salary'),
"部门")

您也可以使用分区而不是groupby

    df=df.withColumn('max_in_dept',F.max('salary')\
   .over(Window.partitionBy('department')))
    df.show(5,False)

有具体问题吗?请看。