连接 2 个数据帧(更新)按总和聚合
Concatenate 2 dataframes (update) aggregating by sum
我有 2 个数据帧,df1 和 df2。 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|
# +------+------+
我有 2 个数据帧,df1 和 df2。 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|
# +------+------+