You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas中如何将DataFrame每4行横向合并为1行?

实现方案

你这个按固定行数横向拼接的需求用pandas+numpy实现效率最高,25600行的文件在你所述的Intel Mac+Python3+Jupyter环境下可以秒级处理完成,具体步骤如下:

  • 前置依赖安装:在Jupyter Notebook的单元格中运行以下命令安装所需库,Intel Mac的x86环境下不存在兼容问题:
pip install pandas numpy
  • 核心处理代码,注意把文件路径替换为你本地的实际路径:
import pandas as pd
import numpy as np

# 读取原CSV文件
# 若原文件第一行是列名(表头),保留header=0;若原文件无表头,将header=0改为header=None
raw_df = pd.read_csv("你的原始CSV文件路径.csv", header=0)

# 校验行数是否符合拼接要求,25600行刚好可被4整除,不会触发报错
if len(raw_df) % 4 != 0:
    raise ValueError("原始文件行数不是4的整数倍,存在剩余行无法按规则拼接")

# 按每4行一组做横向拼接:原数据共15列,4行拼接后刚好60列,总行数自动变为原行数的1/4即6400行
# 用numpy的reshape实现是性能最高的方式,比逐行循环拼接快数十倍
reshaped_arr = raw_df.to_numpy().reshape(
    -1,  # 行数自动计算,即25600/4=6400
    4 * raw_df.shape[1]  # 列数为4*15=60
)
new_df = pd.DataFrame(reshaped_arr)

# 如果你需要给新表设置列名,可以把原表列名重复4次使用,不需要可以跳过这步
new_df.columns = list(raw_df.columns) * 4

# 导出转换后的CSV文件,index=False表示不导出行序号列
new_df.to_csv("转换完成的文件.csv", index=False)

逻辑说明

numpy的reshape操作默认按行优先顺序读取数据,刚好匹配你的拼接规则:

  • 第0组依次读取原表第0、1、2、3行的所有列值,拼接为新表第0行
  • 第1组依次读取原表第4、5、6、7行的所有列值,拼接为新表第1行
  • 后续所有行均按该规则依次处理,完全符合需求。

注意事项

  • 如果你的原始CSV编码不是utf-8(比如是GBK编码的中文文件),读入时在pd.read_csv()里加参数encoding="gbk"即可避免乱码
  • Jupyter环境下如果CSV文件和当前notebook文件放在同一文件夹,直接写文件名作为路径即可,不需要写完整绝对路径

内容的提问来源于stack exchange,提问作者BAE_Sangmin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:24:11