在多列上独立分组

group by independently on multiple column

我有一个数据框,其中有 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

我想对每一列进行单独计数。

您可以通过在 Pyspark 中使用 Windowing 来实现此目的

下面是伪代码(我没有 运行 但你的代码会喜欢下面)

假设您正在使用数据框 (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()

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