在多列上独立分组
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])
我有一个数据框,其中有 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])