如何从数据集的waiting行提取含小数的数值至新列?
解决从指定行提取小数数值的问题
核心思路
问题根源在于你没有限定仅对waiting行执行提取操作,导致全局匹配时误抓取到其他行的末尾数值。正确逻辑是先精准定位目标行,再在目标行范围内提取符合要求的小数数值。
具体实现(以Pandas为例)
假设你的数据集存储在DataFramedf中,row_label列用于标识行名称(包含waiting行),text_content列存储待提取的文本内容:
- 初始化新列
先给DataFrame新增目标列,默认设为空值:
import pandas as pd df['waiting_decimal'] = pd.NA
- 筛选目标行并提取数值
使用正则匹配含小数的数值,仅对waiting行执行提取操作:
import re # 匹配小数的正则(支持正负、整数部分为0的场景,如-0.56、123.45) decimal_regex = r'-?\d+\.\d+' # 定位waiting行的掩码 target_mask = df['row_label'] == 'waiting' # 对目标行执行提取 df.loc[target_mask, 'waiting_decimal'] = df.loc[target_mask, 'text_content'].apply( lambda x: re.search(decimal_regex, x).group() if re.search(decimal_regex, x) else pd.NA )
- 校验结果
查看提取后的结果,确保仅waiting行有有效数值,其他行保持空值:
print(df[['row_label', 'text_content', 'waiting_decimal']])
灵活调整点
- 如果你的小数带百分号(如
3.14%),把正则改成r'-?\d+\.\d+%'即可 - 若文本中有多个小数,要提取全部的话,把
re.search换成re.findall,结果会以列表形式存储 - 务必用
loc定位目标行后再赋值,避免误修改其他行数据
内容的提问来源于stack exchange,提问作者Malvis Va
相关产品推荐
相关产品推荐

