0

如何在不使用 pyspark 重命名列的情况下从单行中的数据框列计算同一列的平均值、最大值、最小值

我使用了下面的命令,但它抛出了一个错误

df5=df5.agg(avg(col("Salaray")),min(col("Salaray")),max(col("Salaray")))
4

1 回答 1

2

不要这样做from pyspark.sql.functions import *

一些函数如pyspark.sql.functions.minpyspark.sql.functions.max会与内置函数minmax、 、 混淆,并会在以后引起许多奇怪的问题。改为这样做:

from pyspark.sql import functions as F

alias如果要重命名列,请使用

F.avg(F.col('salary')).alias('avg_salary')

完整的工作代码

from pyspark.sql import functions as F

(df
    .agg(
        F.avg(F.col('salary')).alias('avg_salary'),
        F.min(F.col('salary')).alias('min_salary'),
        F.max(F.col('salary')).alias('max_salary'),
    )
    .show()
)
# +----------+----------+----------+
# |avg_salary|min_salary|max_salary|
# +----------+----------+----------+
# |     200.0|       100|       300|
# +----------+----------+----------+
于 2021-10-29T17:13:49.143 回答