gpt4 book ai didi

apache-spark - 如何将不同的聚合函数应用于同一列为什么要对 spark 数据帧进行分组?

转载 作者:行者123 更新时间:2023-12-02 03:54:13 26 4
gpt4 key购买 nike

<分区>

要使用 pyspark 按 Spark 数据帧分组,我使用这样的命令:

df2 = df.groupBy('_c1','_c3').agg({'_c4':'max', '_c2' : 'avg'})

结果我得到这样的输出:

+-----------------+-------------+------------------+--------+                   
| _c1| _c3| avg(_c2)|max(_c4)|
+-----------------+-------------+------------------+--------+
| Local-gov| HS-grad| 644952.5714285715| 9|
| Local-gov| Assoc-acdm|365081.64285714284| 12|
| Never-worked| Some-college| 462294.0| 10|
| Local-gov| Bachelors| 398296.35| 13|
| Federal-gov| HS-grad| 493293.0| 9|
| Private| 12th| 632520.5454545454| 8|
| State-gov| Assoc-voc| 412814.0| 11|
| ?| HS-grad| 545870.9230769231| 9|
| Private| Prof-school|340322.89130434784| 15|
+-----------------+-------------+------------------+--------+

这很好,但有两件事我想念:

  1. 我想控制列的名称。例如,我希望将一个新列命名为 avg_c2 而不是 avg(_c2)
  2. 我想以不同的方式聚契约(Contract)一列。例如,我可能想知道 _c4 列的最小值和最大值。我试过以下但它不起作用:

    df2 = df.groupBy('_c1','_c3').agg({'_c4':('min','max'), '_c2' : 'avg'})

    <

有什么方法可以实现我的需求吗?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com