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

如何按Pos列条件合并SMN后接B-PER的两个连续行

数据表连续行合并实现方案

需求规则说明

  • 定位Pos列值为SMN的行,检查其下紧邻行的Pos列值
  • 若下一行值为B-PER,则合并这两行;若下一行不是B-PER,则不执行合并

原始数据样例

原始数据

预期处理结果

处理结果

方案1:Excel 操作实现

  • 新增辅助列合并标记,假设Pos列为A列、数据从第2行开始,在辅助列第2行输入公式:=IF(AND(A2="SMN",A3="B-PER"),1,IF(AND(A2="B-PER",A1="SMN"),2,0))
  • 将公式下拉填充至所有数据行
  • 筛选合并标记=1的行,在需要合并的内容列(比如文本内容列C)输入公式=C2&" "&C3,按Ctrl+Enter批量填充
  • 筛选合并标记=2的行,右键删除整行后取消筛选,清空辅助列即可得到结果

方案2:Python Pandas 代码实现

import pandas as pd

# 读取数据,可根据实际文件格式替换为read_csv等方法
df = pd.read_excel("你的原始数据文件路径.xlsx")

# 生成上下行Pos偏移列,用于匹配合并条件
df["next_pos"] = df["Pos"].shift(-1)
df["prev_pos"] = df["Pos"].shift(1)

# 过滤掉需要被合并的、紧跟在SMN后的B-PER行
result_df = df[~((df["Pos"] == "B-PER") & (df["prev_pos"] == "SMN"))].copy()

# 匹配需要合并的SMN行,合并对应内容列(示例中内容列名为Content,自行替换为实际列名)
merge_condition = (result_df["Pos"] == "SMN") & (result_df["next_pos"] == "B-PER")
b_per_contents = df[df["Pos"] == "B-PER"]["Content"].values
result_df.loc[merge_condition, "Content"] = result_df.loc[merge_condition, "Content"] + " " + b_per_contents

# 清理临时辅助列
result_df = result_df.drop(columns=["next_pos", "prev_pos"])

# 导出结果
result_df.to_excel("合并后结果.xlsx", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 17:57:03