Pandas如何通过字符串匹配删除上下行,提取<Header>标签间数据
实现方法
你可以通过匹配标签行的索引范围直接切片实现,不需要固定行号:
步骤1:定位标签的行索引
假设你从txt读取后的原始DataFrame命名为raw_df,首先定位两个标签的位置:
# 找到<Header>标签所在行的索引 start_idx = raw_df[raw_df.iloc[:, 0] == '<Header>'].index[0] # 找到</Header>标签所在行的索引 end_idx = raw_df[raw_df.iloc[:, 0] == '</Header>'].index[0]
步骤2:切片提取中间内容
直接取两个索引中间的行即可,记得跳过标签本身所在行:
# 提取标签中间的有效数据,重置行索引 result_df = raw_df.loc[start_idx+1 : end_idx-1].reset_index(drop=True)
可选:健壮性兼容
如果担心部分文件没有对应标签,可以加判断避免报错:
import pandas as pd # 先判断是否存在两个标签 has_start = (raw_df.iloc[:, 0] == '<Header>').any() has_end = (raw_df.iloc[:, 0] == '</Header>').any() if has_start and has_end: start_idx = raw_df[raw_df.iloc[:, 0] == '<Header>'].index[0] end_idx = raw_df[raw_df.iloc[:, 0] == '</Header>'].index[0] result_df = raw_df.loc[start_idx+1 : end_idx-1].reset_index(drop=True) else: # 没有找到标签的自定义逻辑,比如返回空df result_df = pd.DataFrame()
运行后result_df就是你需要的仅包含标签内有效数据的DataFrame。
内容的提问来源于stack exchange,提问作者user53526356
相关产品推荐
相关产品推荐

