Spark数据帧运算符(nunique、乘法)

2024-10-01 09:27:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用jupyter笔记本和pandas,但当我使用Spark时,我想使用Spark DataFrame来转换或计算,而不是pandas。请帮我把一些计算转换成Spark DataFrame或RDD。在

数据帧:

df =
+--------+-------+---------+--------+
| userId | item  |  price  |  value |
+--------+-------+---------+--------+
|  169   | I0111 |  5300   |   1    |
|  169   | I0973 |  70     |   1    |
|  336   | C0174 |  455    |   1    |
|  336   | I0025 |  126    |   1    |
|  336   | I0973 |   4     |   1    |
| 770963 | B0166 |   2     |   1    |
| 1294537| I0110 |  90     |   1    |
+--------+-------+---------+--------+

1。使用熊猫计算:

^{pr2}$

结果是一个系列对象:

+--------+------+
| userId |      |
+--------+------+
|  169   |   2  |
|  336   |   3  |
| 770963 |   1  |
| 1294537|   1  |
+--------+------+

2。使用乘法

data_sum = df.groupby(['userId', 'item'])['value'].sum()  --> result is Series object

average_played = np.mean(userItem)  --> result is number

(2)  weighted_games_played = data_sum * (average_played / userItem)

请帮助我使用Spark上的Spark DataFrame和Operators来完成(1)和(2)


Tags: dataframepandasdfdataisvalueresultitem
1条回答
网友
1楼 · 发布于 2024-10-01 09:27:32

您可以使用以下方法实现(1):

import pyspark.sql.functions as f
userItem=df.groupby('userId').agg(f.expr('count(distinct item)').alias('n_item'))

对于(2):

^{pr2}$

相关问题 更多 >