对于下面的数据框
df = spark.createDataFrame(data=[('Alice',4.300),('Bob',7.677)], schema=['name','High'])
当我尝试找到最小值和最大值时,我只得到输出中的最小值。
df.agg({'High':'max','High':'min'}).show()
+-----------+
|min(High) |
+-----------+
| 2094900|
+-----------+
为什么不能agg()
像 Pandas 一样给出 max 和 min 吗?
如你看到的here http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.GroupedData.agg:
聚合(*表达式)
计算聚合并将结果作为 DataFrame 返回。
可用的聚合函数有 avg、max、min、sum、count。
如果 exprs 是从字符串到字符串的单个字典映射,则键是要执行聚合的列,值是聚合函数。
或者,exprs 也可以是聚合列表达式的列表。
参数:exprs– 从列名(字符串)到聚合函数(字符串)的字典映射,或列列表。
您可以使用列列表并在每一列上应用您需要的函数,如下所示:
>>> 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|
+---------+---------+---------+---------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)