讲师中心 微信公众号
AI工具推荐 视频效率加速

如何按块交错合并两个 Pandas DataFrame(每 N 行为一组)

风婷吖_9878

风婷吖_9878

发布时间:2026-10-13 18:38:37

|

109人浏览过

|

来源于php中文网

原创

如何按块交错合并两个 Pandas DataFrame(每 N 行为一组)

本文介绍一种高效、可扩展的方法,使用 numpy.argsort 构造稳定排序索引,将两个等长 DataFrame 按指定行数分组(如每 2 行为一块)交错拼接,避免循环和手动切片,代码简洁且支持任意分块大小。

本文介绍一种高效、可扩展的方法,使用 numpy.argsort 构造稳定排序索引,将两个等长 dataframe 按指定行数分组(如每 2 行为一块)交错拼接,避免循环和手动切片,代码简洁且支持任意分块大小。

在数据处理中,有时需要将两个结构一致的 DataFrame 按“块”而非单行进行交错合并——例如,取 df1 的前 2 行、紧接着 df2 的前 2 行,再取 df1 的第 3–4 行、再接 df2 的第 3–4 行,以此类推。这种模式常见于实验分组、时序对齐或批量结果整合场景。

Pandas 本身不提供原生的“块级交错拼接”方法,但可通过巧妙构造排序键实现:核心思想是为每个 DataFrame 的每一行分配一个逻辑“组号”,相同组号的行将被归并在一起,再利用 np.argsort 的稳定性(stable=True)保证组内原始顺序不变。

以下为标准实现(以每 2 行为一组):

import pandas as pd
import numpy as np

df1 = pd.DataFrame({'col': [1, 2, 3, 4]})
df2 = pd.DataFrame({'col': [5, 6, 7, 8]})

# 为 df1 和 df2 的每行生成组索引:[0,0,1,1] + [0,0,1,1]
group_ids = np.r_[
    np.arange(len(df1)) // 2,   # df1: [0,0,1,1]
    np.arange(len(df2)) // 2    # df2: [0,0,1,1]
]

# 稳定排序:同组内保持原始顺序(df1 行优先于 df2 行,因先拼接 df1)
order = np.argsort(group_ids, stable=True)

# 先纵向拼接,再按 order 重排
result = pd.concat([df1, df2], ignore_index=False).iloc[order].reset_index(drop=True)
print(result)

输出:

   col
0    1
1    2
2    5
3    6
4    3
5    4
6    7
7    8

✅ 关键点说明:

  • np.r_[] 快速拼接两个数组;// 2 实现每 2 行一个组(改为 // N 即可适配任意块大小);
  • stable=True 是必需的(NumPy ≥ 1.22),确保组内多行按原始拼接顺序排列(即 df1 的第 0 组两行总在 df2 同组两行之前);
  • ignore_index=False 保留原始索引,便于后续验证;若需连续整数索引,最后调用 .reset_index(drop=True);
  • 该方法天然支持不同列名(需提前对齐列),也适用于多列 DataFrame(无需修改逻辑)。

⚠️ 注意事项:

  • 两 DataFrame 行数应能被 N 整除,否则末尾组会不完整(可提前截断或填充);
  • 若 df1 与 df2 行数不等,需按最小公倍数或显式填充处理,否则 group_ids 长度不匹配;
  • 性能优异:时间复杂度 O(m+n),远优于循环切片 + pd.concat 的 O(k·(m+n))。

通过调整 N 值,即可灵活切换分块粒度——这是真正可复用的数据混洗模式,推荐收藏为常用工具片段。

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

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

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

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

320

2025.12.04

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

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

252

2026.01.31

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

491

2026.04.13

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

80

2026.10.10

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

40

2026.10.10

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

20

2026.10.10

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

20

2026.10.10

C++类与对象的封装方法教程
C++类与对象的封装方法教程

C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

20

2026.10.10

C++构造函数定义与调用方法
C++构造函数定义与调用方法

C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

20

2026.10.10

热门下载

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

精品课程

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn