pyspark - 'DataFrame' 对象在 pyspark 中不可调用
问题描述
我想要薪水高于 pyspark 部门平均薪水的员工姓名。
filt = df3.select('SALARY','Dept_name','First_name','Last_name')
filt.filter(filt('SALARY').geq(filt.groupBy('Dept_name').agg(F.mean('SALARY')))).show()
解决方案
创建示例数据框:
from pyspark.sql import functions as F
from pyspark.sql.window import Window
data= [[200,'Marketing','Jane','Smith'],
[140,'Marketing','Jerry','Soreky'],
[120,'Marketing','Justin','Sauren'],
[170,'Sales','Joe','Statham'],
[190,'Sales','Jeremy','Sage'],
[220,'Sales','Jay','Sawyer']]
columns= ['SALARY','Dept_name','First_name','Last_name']
df= spark.createDataFrame(data,columns)
df.show()
+------+---------+----------+---------+
|SALARY|Dept_name|First_name|Last_name|
+------+---------+----------+---------+
| 200|Marketing| Jane| Smith|
| 140|Marketing| Jerry| Soreky|
| 120|Marketing| Justin| Sauren|
| 170| Sales| Joe| Statham|
| 190| Sales| Jeremy| Sage|
| 220| Sales| Jay| Sawyer|
+------+---------+----------+---------+
创建查询以检索薪水高于部门平均水平的人员:
w=Window().partitionBy("Dept_name")
df.withColumn("Average_Salary", F.avg("SALARY").over(w))\
.filter(F.col("SALARY")>F.col("Average_Salary"))\
.select("SALARY","Dept_name","First_name","Last_name")\
.show()
+------+---------+----------+---------+
|SALARY|Dept_name|First_name|Last_name|
+------+---------+----------+---------+
| 220| Sales| Jay| Sawyer|
| 200|Marketing| Jane| Smith|
+------+---------+----------+---------+
推荐阅读
- bash - 是否可以将不同的内容回显到在 bash 范围内创建的不同文件中 for 循环?
- c# - CancellationToken 甚至为空
- c++14 - 构建段树时的垃圾值
- unix - 在 UNIX 脚本中使用模式拆分文件
- python - 预测函数返回指数值
- javascript - 从网页结果中提取 URL 并在 iframe 中显示 URL
- typo3 - TYPO3 向页面属性添加新标签
- python - 我在将 Tensorflow - gpu 安装到我的 anaconda 虚拟环境中时遇到问题
- powershell - In a powershell DSC resource declaration, what syntactical element is the declaration?
- xampp - CSS 更改不会显示在 xampp 上,但会在上传到域时显示