0

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

我想要单独计算每一列。

4

2 回答 2

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()
于 2019-09-24T11:14:10.853 回答
1

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

于 2019-09-24T14:22:56.300 回答