Вы можете добиться этого, используя Windowing в Pyspark
Ниже приведен псевдокод (я не запускал его, но ваш код хотел бы ниже)
Предполагается, что вы работаете с фреймом данных (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()