按总和连接 2 个数据帧更新

问题描述

我有 2 个数据框,df1df2。数据框 df2 必须与 df1df1 列中的值连接在一起,如果列值存在,则更新体积数据通过添加 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|
#     +------+------+