我正在使用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)?我是个新手,所以也许我仍然无法将其概念化。
谢谢。
答案 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