Mur*_*ali 1 python apache-spark pyspark pyspark-sql
我有两个数据帧,DF1 和 DF2,DF1 是主存储来自 DF2 的任何附加信息。
假设 DF1 具有以下格式,
Item Id | item | count
---------------------------
1 | item 1 | 2
2 | item 2 | 3
1 | item 3 | 2
3 | item 4 | 5
Run Code Online (Sandbox Code Playgroud)
DF2 包含 DF1 中已经存在的 2 个项目和两个新条目。(itemId和item被认为是一个单独的组,可以作为join的key)
Item Id | item | count
---------------------------
1 | item 1 | 2
3 | item 4 | 2
4 | item 4 | 4
5 | item 5 | 2
Run Code Online (Sandbox Code Playgroud)
我需要组合两个数据框,以便增加现有项目计数并插入新项目。
结果应该是这样的:
Item Id | item | count
---------------------------
1 | item 1 | 4
2 | item 2 | 3
1 | item 3 | 2
3 | item 4 | 7
4 | item 4 | 4
5 | item 5 | 2
Run Code Online (Sandbox Code Playgroud)
我有一种方法可以做到这一点,不确定它是否有效或正确的方法
temp1 = df1.join(temp,['item_id','item'],'full_outer') \
.na.fill(0)
temp1\
.groupby("item_id", "item")\
.agg(F.sum(temp1["count"] + temp1["newcount"]))\
.show()
Run Code Online (Sandbox Code Playgroud)
由于两个数据帧的架构是相同的,您可以执行 aunion
然后执行groupby
id 和aggregate
计数。
step1: df3 = df1.union(df2);
step2: df3.groupBy("Item Id", "item").agg(sum("count").as("count"));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27082 次 |
最近记录: |