遍历Pyspark中的数据框以执行进一步的计算

时间:2020-11-10 16:18:18

标签: python pandas apache-spark pyspark

我正在使用Jupyter Notebook中的python / pySpark,并且试图找出以下内容:

我有一个这样的数据框:

id    name    degrees_id
1      A         51
2      B         12
3      C         13

还有一个像

degrees_id    val
    51         2
    12         3
    12         4
    51         2
    51         2

我要获取的数据框如下所示:

name    sum_val
 A         6
 B         7

到目前为止,我刚刚收集了数据框:

df1 = hc.sql("select * from dataframe1")
df2 = hc.sql("select * from dataframe2")

如何遍历df1的所有行,以便可以在df2内查询以求和每个名称对应的每个val的总和(通过Degrees_id)?我是个新手,所以也许我仍然无法将其概念化。

谢谢。

2 个答案:

答案 0 :(得分:2)

Pyspark:

from pyspark.sql.functions import sum

df1.join(df2, ["degrees_id"], "inner").groupBy("name")\
    .agg(sum("val").alias("sum_val")).show()

+----+-------+
|name|sum_val|
+----+-------+
|   A|      6|
|   B|      7|
+----+-------+

答案 1 :(得分:0)

我认为您想进行合并和分组:

(df1.merge(df2, on='degrees_id')
   .groupby('name', as_index=False)['val'].sum()
)

输出:

  name  val
0    A    6
1    B    7
相关问题