如何使用Pandas按条件将含Chq编号的行与其上一行合并为一行
实现方案
下面提供3种不同场景下可直接运行的实现方案:
方案1:awk命令行(最快的纯命令行处理方案)
直接对输入文件执行以下命令即可输出目标结果:awk '/^Chq/ {print prev, $0; prev=""} prev != "" {print prev} {prev = $0}' 你的输入文件路径 > 输出文件路径
处理逻辑:- 读取每行时先判断是否以
Chq开头 - 是则拼接上一行缓存内容输出,清空缓存
- 否则先输出上一行缓存的非Chq内容,再把当前行存入缓存
- 读取每行时先判断是否以
方案2:Python脚本(适合需要集成到代码中的场景)
复制以下代码运行即可:# 替换为你的输入输出文件路径 input_path = "input.txt" output_path = "output.txt" with open(input_path, "r", encoding="utf-8") as f: lines = [line.rstrip("\n") for line in f] result = [] prev_line = "" for line in lines: if line.startswith("Chq"): result.append(f"{prev_line} {line}") prev_line = "" else: if prev_line: result.append(prev_line) prev_line = line # 处理最后一行非Chq的情况 if prev_line: result.append(prev_line) with open(output_path, "w", encoding="utf-8") as f: f.write("\n".join(result) + "\n")方案3:sed命令行
命令如下:sed '/^Chq/{x;G;s/\n/ /;b};x;/./p;${x;p}' 你的输入文件路径 > 输出文件路径
核心是利用sed的暂存空间缓存上一行内容,匹配到Chq行时拼接输出。
内容的提问来源于stack exchange,提问作者RBR
相关产品推荐
相关产品推荐

