我有一个Dataframe,其中有2列。
dataframe 1:- product | act a | A b | B c | C d | D b | C a | D
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
product act product_count act_count2
a A 2 1
b B 2 1
c C 1 2
d D 1 2
我要对每一列分别计数。
bvuwiixz1#
您可以通过在pyspark中使用窗口来实现这一点下面是伪代码(我没有运行它,但您的代码希望如下)假设您正在使用Dataframe(df)
from pyspark.sql.window import Windowfrom pyspark.sql import functions as Fw = 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()
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()
cgyqldqp2#
您可以使用df.select()作为 df_count = df.select([F.count(df[col]).over(Window.partitionBy(col)).alias("{}_count".format(col)) for col in df.columns])
df_count = df.select([F.count(df[col]).over(Window.partitionBy(col)).alias("{}_count".format(col)) for col in df.columns])
2条答案
按热度按时间bvuwiixz1#
您可以通过在pyspark中使用窗口来实现这一点
下面是伪代码(我没有运行它,但您的代码希望如下)
假设您正在使用Dataframe(df)
cgyqldqp2#
您可以使用df.select()作为
df_count = df.select([F.count(df[col]).over(Window.partitionBy(col)).alias("{}_count".format(col)) for col in df.columns])