基于子串定位提取DataFrame指定区间列字符串并合并的技术问题
解决方案
核心修正点
- 匹配逻辑优化:用正则
r'666|999'实现“或”匹配,且仅在'then'出现后的行中查找目标行,避免无效匹配。 - 索引切片修正:Pandas切片为左闭右开,需调整索引确保包含结束行;直接使用行号切片即可,无需额外转换。
完整可运行代码
import numpy as np # 定位'then'首次出现的行索引 then_loc = np.where(Words['text'] == 'then')[0][0] # 在'then'之后的行中,找到第一个包含'666'或'999'的行索引 target_subset = Words.iloc[then_loc + 1:] end_relative_loc = np.where(target_subset['text'].str.contains(r'666|999', na=False))[0][0] end_loc = then_loc + 1 + end_relative_loc # 提取范围并合并字符串 result = ''.join(Words['text'].iloc[then_loc + 1 : end_loc + 1]) print(result) # 输出:theirfe156sligh334pain666
代码说明
np.where(Words['text'] == 'then')[0][0]:精准匹配'then',获取其首次出现的行号(从0开始计数)。target_subset = Words.iloc[then_loc + 1:]:仅处理'then'之后的行,排除无关内容。end_loc:将子集中的相对索引转换为原DataFrame的绝对索引,确保切片范围覆盖到目标行。''.join(...):直接拼接提取到的所有字符串,得到最终结果。
内容的提问来源于stack exchange,提问作者user17312322
相关产品推荐
相关产品推荐

