web-dev-qa-db-ja.com

PySparkのagg()が一度に1つの列しか要約できないのはなぜですか?

以下のデータフレームの場合

df=spark.createDataFrame(data=[('Alice',4.300),('Bob',7.677)],schema=['name','High'])

Min&maxを見つけようとすると、出力にmin値しか表示されません。

df.agg({'High':'max','High':'min'}).show()
+-----------+
|min(High)  |
+-----------+
|    2094900|
+-----------+

なぜagg()はパンダのように最大と最小の両方を与えることができないのですか?

5
GeorgeOfTheRF

ご覧のとおり here

agg(* exprs)

集計を計算し、結果をDataFrameとして返します。

使用可能な集計関数は、avg、max、min、sum、countです。

Exprsが文字列から文字列への単一のdictマッピングである場合、キーは集計を実行する列であり、値は集計関数です。

または、exprsは集計列式のリストにすることもできます。

パラメータ:exprs–列名(文字列)から集約関数(文字列)へのdictマッピング、または列のリスト。

次のように、列のリストを使用して、必要な関数をすべての列に適用できます。

>>> from pyspark.sql import functions as F

>>> df.agg(F.min(df.High),F.max(df.High),F.avg(df.High),F.sum(df.High)).show()
+---------+---------+---------+---------+
|min(High)|max(High)|avg(High)|sum(High)|
+---------+---------+---------+---------+
|      4.3|    7.677|   5.9885|   11.977|
+---------+---------+---------+---------+
23
titiro89