问题描述
我有 2 个数据框,df1 和 df2。数据框 df2 必须与 df1 与 df1 列中的值连接在一起,如果列值存在,则更新体积数据通过添加 df1 'volume' 和 df2 'volume'。结果应按“砖块”排序。
示例:
df1 = [
{'bricks':-3,'volume':50},{'bricks':-2,'volume':20},{'bricks':-1,'volume':30}
]
df2 = [
{'bricks':-1,'volume':10},'volume':0},{'bricks':-3,'volume':60},{'bricks':-4,{'bricks':-5,]
预期结果:
df1 = [
{'bricks':-5,'volume':110},'volume':40}
]
解决方法
试试这个:
pd.concat([df1,df2]).groupby('bricks').sum().reset_index()
bricks volume
0 -5 60
1 -4 60
2 -3 110
3 -2 20
4 -1 40
,
如果您使用 PySpark。
df = df1.union(df2).groupby('bricks').agg(F.sum('volume').alias('volume')).orderBy('bricks')
df.show()
# +------+------+
# |bricks|volume|
# +------+------+
# | -5| 60|
# | -4| 60|
# | -3| 110|
# | -2| 20|
# | -1| 40|
# +------+------+