0

0

如何基于自定义迭代序号精准合并多个DataFrame

聖光之護

聖光之護

发布时间:2026-02-12 12:00:17

|

542人浏览过

|

来源于php中文网

原创

如何基于自定义迭代序号精准合并多个DataFrame

本文介绍使用pandas按指定`iteration`值从多个dataframe中提取对应行,并沿列方向(`axis=1`)拼接为宽格式结果表,适用于性能测试数据对齐、多组实验指标对比等场景。

在实际数据分析中,常需将来自不同实验轮次或配置的结构化结果(如IOPS、延迟等性能指标)按特定标识(如iteration)进行横向对齐,而非传统意义上的键连接(merge/join)。此时,若目标行顺序不一致、存在缺失或需严格按用户指定序列排列,则直接使用reindex配合concat是更可控、更高效的方法。

核心思路:索引对齐 + 列向拼接

关键在于先将iteration设为索引,再按目标列表重排行序(reindex),确保每个DataFrame输出的行顺序和内容完全符合预期;随后通过pd.concat(..., axis=1)实现列级拼接,生成类似“双栏对照表”的结构。

✅ 基础实现(两个DataFrame)

import pandas as pd

# 定义对齐函数:按指定iteration列表提取并保持顺序
def align_by_iteration(df, target_iters):
    return (df.set_index('iteration')
              .reindex(target_iters)  # 严格按target_iters顺序取行,缺失则填充NaN
              .reset_index())

# 指定各DataFrame所需提取的iteration
iter_df1 = ['1_1', '2_2', '3_3', '9_9']
iter_df2 = ['1_1', '2_2', '5_5', '6_6']

# 对齐后水平拼接
df3 = pd.concat([
    align_by_iteration(df1, iter_df1),
    align_by_iteration(df2, iter_df2)
], axis=1)

print(df3)
输出说明:结果中前3列来自df1(iteration, IOPS, Latency),后3列来自df2,两组iteration列独立存在,行顺序由各自target_iters决定——即第0行对应1_1,第1行对应2_2,依此类推。注意:reindex会自动用NaN填充未匹配的iteration(本例中无缺失,故未体现)。

? 扩展方案:支持N个DataFrame批量处理

当需对更多DataFrame执行相同逻辑时,推荐使用itertools.starmap提升可维护性:

飞桨PaddlePaddle
飞桨PaddlePaddle

飞桨PaddlePaddle开发者社区与布道,与社区共同进步

下载
from itertools import starmap

# 批量定义:DataFrame列表 + 对应的iteration列表
dataframes = [df1, df2]
iteration_lists = [
    ['1_1', '2_2', '3_3', '9_9'],
    ['1_1', '2_2', '5_5', '6_6']
]

# 一行完成全部对齐与拼接
df3 = pd.concat(
    starmap(align_by_iteration, zip(dataframes, iteration_lists)),
    axis=1
)

该写法清晰分离了“数据源”与“抽取规则”,便于后续扩展(如加入df3、df4)或动态生成iteration_lists。

⚠️ 注意事项与最佳实践

  • reindex vs loc:reindex会保留目标列表中的重复项并允许缺失(填NaN),而df.set_index('iteration').loc[target_iters]要求所有值必须存在,否则抛出KeyError。推荐优先使用reindex以增强鲁棒性。
  • 列名冲突处理:若多个DataFrame包含同名列(如都含IOPS),拼接后将自动添加.1, .2后缀。如需统一前缀,可在align_by_iteration中加入列重命名:
    .add_prefix('df1_')  # 在 reset_index() 前调用
  • 性能提示:对超大DataFrame,避免多次set_index。可预先构建索引版本缓存复用。
  • 空值检查:建议拼接后用df3.isna().sum()快速验证是否有意外缺失,尤其当iteration拼写不一致时(如'1_1 '含空格)。

通过上述方法,你不仅能精准控制每行数据的来源与顺序,还能灵活适配任意数量的数据源,为实验报告、A/B测试分析或自动化监控看板提供坚实的数据整合基础。

相关标签:

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

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

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

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

73

2025.12.04

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

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

4

2026.01.31

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

52

2025.12.13

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

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

485

2023.07.04

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

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

287

2023.08.07

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

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

747

2023.10.16

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

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

523

2024.03.13

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

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

76

2025.09.08

2026春节习俗大全
2026春节习俗大全

本专题整合了2026春节习俗大全,阅读专题下面的文章了解更多详细内容。

189

2026.02.11

热门下载

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

精品课程

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

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