Apache spark 如何应用函数修改列值?(Pyspark 2.4.5-数据块)

Apache spark 如何应用函数修改列值?(Pyspark 2.4.5-数据块),apache-spark,pyspark,Apache Spark,Pyspark,我的目标是绘制每个范围的地图,并将其绘制到中间部分(15000-25000->20000) 我整理了数据,并将其浓缩到本专栏。 如何在列本身上应用所需的转换\n将结果映射到另一列? 我在互联网上找不到任何关于pyspark的可理解数据。使用Spark高阶函数聚合自Spark-2.4 例如: df=spark.createDataFrame([('15000-25000',)],['jobsalary']) from pyspark.sql.functions import * df.with

我的目标是绘制每个范围的地图,并将其绘制到中间部分(15000-25000->20000)

我整理了数据,并将其浓缩到本专栏。 如何在列本身上应用所需的转换\n将结果映射到另一列?
我在互联网上找不到任何关于pyspark的可理解数据。

使用Spark高阶函数
聚合
Spark-2.4

例如:

df=spark.createDataFrame([('15000-25000',)],['jobsalary'])

from pyspark.sql.functions import *

df.withColumn("mid",expr('cast(aggregate(cast(split(jobsalary,"-") as array<int>),0,(acc,x) -> acc+x)/size(cast(split(jobsalary,"-") as array<int>)) as int)')).show()
#+-----------+-------+
#|  jobsalary|  mid  |
#+-----------+-------+
#|15000-25000|  20000|
#+-----------+-------+
df=spark.createDataFrame([('15000-25000',)],['jobsalary'])
从pyspark.sql.functions导入*
df.withColumn(“mid”,expr('cast(聚合(转换(拆分(jobsalary,“-”)为数组),0,(acc,x)->acc+x)/size(转换(拆分(拆分(jobsalary,“-”)为数组))为int)show()
#+-----------+-------+
#|工作工资|中等|
#+-----------+-------+
#|15000-25000|  20000|
#+-----------+-------+
用于spark
df.withColumn('id',monotonically_increasing_id()).\
   withColumn('val',explode('jobsalary')).\
   groupBy('id').agg(avg('val').alias('mid')).\
   drop('id').show()

#+-----------+-------+
#|  jobsalary|  mid  |
#+-----------+-------+
#|15000-25000|  20000|
#+-----------+-------+