如何对两个Pandas DataFrame按ID求和更新并合并新增行?
解决方案:Pandas按ID合并并对value列求和更新
你可以通过合并两个DataFrame后按ID分组求和的方式实现需求,具体步骤如下:
- 先用
pd.concat()将两个DataFrame合并为一个整体 - 以
ID为分组键,对value列执行求和聚合 - 重置索引恢复成标准的DataFrame结构
完整代码示例:
import pandas as pd d1 = pd.DataFrame({'ID': ["A", "B", "C", "D"], "value": [2, 3, 4, 5]}) d2 = pd.DataFrame({'ID': ["B", "D", "E"], "value": [1, 3, 2]}) # 合并两个DataFrame combined = pd.concat([d1, d2]) # 按ID分组求和,重置索引 result = combined.groupby('ID', as_index=False)['value'].sum() print(result)
执行后输出:
ID value 0 A 2 1 B 4 2 C 4 3 D 8 4 E 2
为什么之前的方法不行?
update()方法的作用是用另一个DataFrame的值替换原DataFrame的匹配项,不会执行求和操作,只会覆盖原有值- 单纯使用
concat()只是将两个DataFrame行堆叠,不会自动对重复ID的value列求和,需要配合分组聚合才能实现需求
内容的提问来源于stack exchange,提问作者krcoder
相关产品推荐
相关产品推荐

