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

如何在Pandas DataFrame中将下一行移动并追加到上一行

Pandas 实现相邻下一行数据追加到上一行方案

你的需求属于典型的双行分组合并场景,即每2行对应同一条记录的拆分内容,将第二行内容合并到第一行后输出即可,直接参考以下可运行代码:

  • 场景1:需要将下一行的内容拼接到上一行对应列的单元格中
import pandas as pd
import numpy as np

# --------------------------
# 此处替换为你自己的DataFrame读取逻辑
# df = pd.read_csv("your_file.csv")
# 以下为模拟测试数据
df = pd.DataFrame({
    '列1': ['分类1', np.nan, '分类2', np.nan, '分类3', np.nan],
    '列2': ['主值1', '补充值1', '主值2', '补充值2', '主值3', '补充值3'],
    '数值列': [12, 34, 56, 78, 90, 12]
})
# --------------------------

# 生成分组标识:每相邻两行归为同一组
df["_gid"] = df.index // 2

# 按组合并同列非空值
res = df.groupby("_gid").agg(
    lambda col: "".join([str(v) for v in col.dropna()])
).reset_index(drop=True)
  • 场景2:需要将下一行的内容作为新列追加到上一行(不覆盖/拼接原单元格)
# 同样先加分组标识
df["_gid"] = df.index // 2
# 标记组内行顺序:0代表组内第一行(上一行),1代表组内第二行(要移动的下一行)
df["_rank"] = df.groupby("_gid").cumcount()

# 透视展开为宽表
res = df.pivot(index="_gid", columns="_rank")
# 扁平化列名,组内第二行的列自动加后缀
res.columns = [f"{c}_补充" if r == 1 else c for c, r in res.columns]
res = res.reset_index(drop=True)

注意:如果原始数据存在无规律空行,先执行df = df.dropna(how="all").reset_index(drop=True)过滤全空行、重置索引后,再跑上述分组逻辑,避免分组错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:36:10