我有以下格式的Spark数据框。
df = spark.createDataFrame([(1, 2, 3), (1, 4, 100), (20, 30, 50)],['a', 'b', 'c'])
df.show()
输入:
我想添加一个新列“ median”作为列“ a”,“ b”,“ c”的中位数。如何在PySpark中做到这一点。
预期产量:
我正在使用Spark 2.3.1
最佳答案
使用udf
定义用户定义的函数,然后使用withColumn
将指定的列添加到数据框中:
from numpy import median
from pyspark.sql.functions import col, udf
from pyspark.sql.types import IntegerType
def my_median(a, b, c):
return int(median([int(a),int(b),int(c)]))
udf_median = udf(my_median, IntegerType())
df_t = df.withColumn('median', udf_median(df['a'], df['b'], df['c']))
df_t.show()
关于apache-spark - 如何在Spark DataFrame中计算按行中位数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54197788/