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

如何基于Pandas DataFrame的Req_ID列按SRS拆分并复制行?

Pandas按SRS标识拆分Req_ID列并复制行的实现方案

原始数据

import pandas as pd

data = {'Test_Step_ID': ['9.1.1', '9.1.2', '9.1.3', '9.1.4'],
        'Protocol_Name': ['A', 'B', 'C', 'D'],
        'Req_ID': ['SRS_0081d', 'SRS_0079', 'SRS_0082SRS_0082a', 'SRS_0015SRS_0015cSRS_0015d']
        }
df = pd.DataFrame(data)

需求说明

将Req_ID列中连续拼接的SRS标识拆分,每个SRS值单独占一行,其他列(Test_Step_ID、Protocol_Name)的数值保持与原行一致。

实现方案

利用正则表达式拆分Req_ID为SRS子串列表,再通过explode方法展开列表生成多行:

import re
import pandas as pd

# 原始数据初始化
data = {'Test_Step_ID': ['9.1.1', '9.1.2', '9.1.3', '9.1.4'],
        'Protocol_Name': ['A', 'B', 'C', 'D'],
        'Req_ID': ['SRS_0081d', 'SRS_0079', 'SRS_0082SRS_0082a', 'SRS_0015SRS_0015cSRS_0015d']
        }
df = pd.DataFrame(data)

# 拆分Req_ID为SRS子串列表
df['Req_ID'] = df['Req_ID'].apply(lambda x: re.findall(r'SRS_\w+', x))

# 展开列表生成多行,重置索引
result_df = df.explode('Req_ID', ignore_index=True)

# 输出结果
print(result_df)

代码解释

  1. 正则拆分:re.findall(r'SRS_\w+', x) 匹配所有以SRS_开头、后续包含字母/数字/下划线的子串,将连续拼接的SRS标识拆分为列表。
  2. 展开行:explode('Req_ID', ignore_index=True) 将列表类型的Req_ID列展开,每个列表元素对应一行,ignore_index=True保证新的DataFrame索引连续。

最终输出

Test_Step_ID Protocol_Name     Req_ID
0         9.1.1             A  SRS_0081d
1         9.1.2             B   SRS_0079
2         9.1.3             C   SRS_0082
3         9.1.3             C  SRS_0082a
4         9.1.4             D   SRS_0015
5         9.1.4             D  SRS_0015c
6         9.1.4             D  SRS_0015d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:03:14