0

0

如何基于共同键合并并累加两个 DataFrame 的行数据

霞舞

霞舞

发布时间:2026-02-26 10:11:14

|

540人浏览过

|

来源于php中文网

原创

如何基于共同键合并并累加两个 DataFrame 的行数据

本文介绍如何将第二个 dataframe 中与第一个 dataframe 共享主键(如 'name' 列)的行数据,按列数值累加到第一个 dataframe 对应行中,忽略不匹配的行,并保持原始键的完整性。

本文介绍如何将第二个 dataframe 中与第一个 dataframe 共享主键(如 'name' 列)的行数据,按列数值累加到第一个 dataframe 对应行中,忽略不匹配的行,并保持原始键的完整性。

在数据分析实践中,常需对多个来源的同类记录进行“增量聚合”——即仅对已存在的实体(如用户、球员、产品)更新其指标,而不引入新实体、也不覆盖主键字段。本例中,df1 是基准数据表,df2 是增量更新表;目标是:仅当 df2 中某行的 'name' 在 df1 中已存在时,才将其数值列('goals', 'minutes')加到 df1 对应行上,且 'name' 本身不参与运算或重复写入

最简洁、高效且符合 pandas 惯用法的解决方案是采用三步链式操作:

  1. 筛选并拼接:保留 df2 中 'name' 出现在 df1 中的所有行,再与 df1 垂直拼接(pd.concat);
  2. 分组聚合:以 'name' 为键分组,对所有数值列执行 sum()(自动跳过非数值列,且天然支持多列统一累加);
  3. 恢复结构:调用 .reset_index() 将分组键转回普通列,得到标准 DataFrame。

以下是完整可运行代码:

import pandas as pd

df1 = pd.DataFrame([
    {'name': 'Ben', 'goals': 1, 'minutes': 90},
    {'name': 'Bob', 'goals': 1, 'minutes': 64},
    {'name': 'Kevin', 'goals': 1, 'minutes': 90}
])

df2 = pd.DataFrame([
    {'name': 'Ben', 'goals': 1, 'minutes': 88},
    {'name': 'Kevin', 'goals': 1, 'minutes': 3},
    {'name': 'Steve', 'goals': 1, 'minutes': 13}
])

# 核心逻辑:筛选 + 拼接 + 分组求和 + 重置索引
result = (
    pd.concat([df1, df2.loc[df2["name"].isin(df1["name"])]])
    .groupby("name", as_index=False)
    .sum()
)

print(result)

输出:

Baklib
Baklib

在线创建产品手册、知识库、帮助文档

下载
    name  goals  minutes
0    Ben      2      178
1    Bob      1       64
2  Kevin      2       93

关键优势说明

  • 健壮性高:groupby(...).sum() 自动处理缺失列、空值(默认跳过),且无需预设列名;
  • 无副作用:不修改原 df1 或 df2,符合函数式编程原则;
  • 可扩展性强:若后续新增数值列(如 'assists'),代码无需更改;
  • 性能优秀:避免显式循环和逐行索引查找(如 iloc[position]),充分利用 pandas 向量化操作。

⚠️ 注意事项

  • 确保 'name' 列类型一致(如均为 str),否则 isin() 可能返回意外结果;建议前置校验:df1['name'].dtype == df2['name'].dtype;
  • 若需保留 df1 中原始行顺序(如 'Bob' 必须排第二),而 groupby 默认按字典序排序,可在最后按 df1['name'] 顺序重排:
    result = result.set_index('name').reindex(df1['name']).reset_index()
  • 该方法假设所有数值列均需累加;若需对不同列应用不同聚合逻辑(如 'minutes' 取最大值、'goals' 取和),则应改用 agg({'goals': 'sum', 'minutes': 'max'})。

综上,此方案以声明式语法精准表达了业务意图:「对交集键做数值列累加」,兼顾可读性、性能与可维护性,是 pandas 数据融合任务中的推荐实践。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

76

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

9

2026.01.31

CSS position定位有几种方式
CSS position定位有几种方式

有4种,分别是静态定位、相对定位、绝对定位和固定定位。更多关于CSS position定位有几种方式的内容,可以访问下面的文章。

83

2023.11.23

数据分析的方法
数据分析的方法

数据分析的方法有:对比分析法,分组分析法,预测分析法,漏斗分析法,AB测试分析法,象限分析法,公式拆解法,可行域分析法,二八分析法,假设性分析法。php中文网为大家带来了数据分析的相关知识、以及相关文章等内容。

497

2023.07.04

数据分析方法有哪几种
数据分析方法有哪几种

数据分析方法有:1、描述性统计分析;2、探索性数据分析;3、假设检验;4、回归分析;5、聚类分析。本专题为大家提供数据分析方法的相关的文章、下载、课程内容,供大家免费下载体验。

289

2023.08.07

网站建设功能有哪些
网站建设功能有哪些

网站建设功能包括信息发布、内容管理、用户管理、搜索引擎优化、网站安全、数据分析、网站推广、响应式设计、社交媒体整合和电子商务等功能。这些功能可以帮助网站管理员创建一个具有吸引力、可用性和商业价值的网站,实现网站的目标。

756

2023.10.16

数据分析网站推荐
数据分析网站推荐

数据分析网站推荐:1、商业数据分析论坛;2、人大经济论坛-计量经济学与统计区;3、中国统计论坛;4、数据挖掘学习交流论坛;5、数据分析论坛;6、网站数据分析;7、数据分析;8、数据挖掘研究院;9、S-PLUS、R统计论坛。想了解更多数据分析的相关内容,可以阅读本专题下面的文章。

529

2024.03.13

Python 数据分析处理
Python 数据分析处理

本专题聚焦 Python 在数据分析领域的应用,系统讲解 Pandas、NumPy 的数据清洗、处理、分析与统计方法,并结合数据可视化、销售分析、科研数据处理等实战案例,帮助学员掌握使用 Python 高效进行数据分析与决策支持的核心技能。

80

2025.09.08

batoto漫画官网入口与网页版访问指南
batoto漫画官网入口与网页版访问指南

本专题系统整理batoto漫画官方网站最新可用入口,涵盖最新官网地址、网页版登录页面及防走失访问方式说明,帮助用户快速找到batoto漫画官方平台,稳定在线阅读各类漫画内容。

320

2026.02.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号