按多个列独立分组

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

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

  1. dataframe 1:-
  2. product | act
  3. a | A
  4. b | B
  5. c | C
  6. d | D
  7. b | C
  8. a | D

我希望输出如下:

  1. product act product_count act_count2
  2. a A 2 1
  3. b B 2 1
  4. c C 1 2
  5. d D 1 2

我要对每一列分别计数。

bvuwiixz

bvuwiixz1#

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

  1. from pyspark.sql.window import Window
  2. from pyspark.sql import functions as F
  3. w = Window.partitionBy('product')
  4. w1 = Window.partitionBy('act')
  5. df.withColumn('product_count', F.count('product').over(w)).withColumn('act_count', F.count('act').over(w1))
  6. 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])

相关问题