连接 2 个数据帧(更新)按总和聚合

Concatenate 2 dataframes (update) aggregating by sum

我有 2 个数据帧,df1df2。 Dataframe df2 必须与 df1 连接,列 'bricks' 中的值不在 df1[=25= 中] 如果列值存在,则通过添加 df1 'volume' 和 df2 'volume' 来更新体积数据。结果应按 'bricks'.

排序

示例:

df1 = [
    {'bricks':-3, 'volume':50},
    {'bricks':-2, 'volume':20},
    {'bricks':-1, 'volume':30}
]

df2 = [
    {'bricks':-1, 'volume':10},
    {'bricks':-2, 'volume':0},
    {'bricks':-3, 'volume':60},
    {'bricks':-4, 'volume':60},
    {'bricks':-5, 'volume':60},
]

预期结果:

df1 = [
    {'bricks':-5, 'volume':60},
    {'bricks':-4, 'volume':60},
    {'bricks':-3, 'volume':110},
    {'bricks':-2, 'volume':20},
    {'bricks':-1, '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|
#     +------+------+