按多个列独立分组

vaqhlq81  于 2021-06-27  发布在  Hive
关注(0)|答案(2)|浏览(355)

我有一个Dataframe,其中有2列。

dataframe 1:-

  product | act
    a     |  A
    b     |  B
    c     |  C
    d     |  D
    b     |  C
    a     |  D

我希望输出如下:

product   act   product_count   act_count2
     a        A       2               1
     b        B       2               1
     c        C       1               2
     d        D       1               2

我要对每一列分别计数。

bvuwiixz

bvuwiixz1#

您可以通过在pyspark中使用窗口来实现这一点
下面是伪代码(我没有运行它,但您的代码希望如下)
假设您正在使用Dataframe(df)

from pyspark.sql.window import Window
from pyspark.sql import functions as F

w = Window.partitionBy('product')
w1 = Window.partitionBy('act')

df.withColumn('product_count', F.count('product').over(w)).withColumn('act_count', F.count('act').over(w1))

df.show()
cgyqldqp

cgyqldqp2#

您可以使用df.select()作为 df_count = df.select([F.count(df[col]).over(Window.partitionBy(col)).alias("{}_count".format(col)) for col in df.columns])

相关问题