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

如何在Pandas DataFrame中为含REL的行后添加分隔行?

在Pandas DataFrame中为含"REL"的行后添加空分隔行

需求说明

需要在Pandas DataFrame里,给action列包含"REL"关键字的每一行之后,添加一行全空(值为NaN)的分隔行。

原始代码

import pandas as pd
data = [
    [1,'ACQ','A'],
    [2,'REL','A'],
    [3,'ACQ','B'],
    [4,'REL','B'],
    [5,'ACQ','C'],
    [6,'REL','C'],
    [7,'ACQ','A'],
    [8,'REL','A']
]
df = pd.DataFrame(data,columns=['x','action','name'])
print(df)

解决方案代码

import pandas as pd
data = [
    [1,'ACQ','A'],
    [2,'REL','A'],
    [3,'ACQ','B'],
    [4,'REL','B'],
    [5,'ACQ','C'],
    [6,'REL','C'],
    [7,'ACQ','A'],
    [8,'REL','A']
]
df = pd.DataFrame(data,columns=['x','action','name'])

# 定位所有action为"REL"的行索引
rel_row_indices = df[df['action'] == 'REL'].index
# 计算需要插入空行的位置(REL行的下一行)
insert_locations = [idx + 1 for idx in rel_row_indices]

# 从后往前插入空行,避免索引偏移导致位置错误
for loc in reversed(insert_locations):
    # 创建一行全空的DataFrame,列名与原表一致
    empty_row = pd.DataFrame([[pd.NA]*len(df.columns)], columns=df.columns)
    # 拼接原表前半部分、空行、原表后半部分
    df = pd.concat([df.iloc[:loc], empty_row, df.iloc[loc:]], ignore_index=True)

print(df)

代码说明

  1. 定位目标行:通过布尔索引筛选出action列等于"REL"的所有行,获取它们的索引。
  2. 确定插入位置:每个REL行的下一行就是要插入空行的位置,给每个REL行索引加1得到插入点。
  3. 反向插入:如果从前往后插入空行,会导致后续插入位置偏移(表长度增加后索引会变化),用reversed()从后往前处理,保证每个插入位置始终准确。
  4. 创建空行:生成一行全为pd.NA的行,确保列名和原DataFrame一致,避免拼接时出现列不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:07:55