如何在Sent列值为Yes时提取Message列字符串中的特定数值
列值提取需求实现方案
下面分三种常用工具场景给出可直接运行的实现方法:
- Excel/WPS表格场景
假设你的数据行从第2行开始,Message列为B列、Sent列为C列,在空白列输入以下公式下拉填充即可:=IF(C2="Yes",MID(B2,FIND("-Yes",B2)-3,3),"")
后续筛选该列非空值,就能得到你要的155、045结果。 - Python Pandas场景
如果你是用Python处理数据表,用正则匹配提取即可,示例代码如下:import pandas as pd # 替换为你的数据表读取逻辑,比如read_csv/read_excel df = pd.DataFrame({ "Bin": ["X343", "VFG33", "JH789", "1255"], "Message": ["Message is 333-Yes", "Content Value on 155-Yes", "Bring to Dock33 at 045-Yes", "Message is 768-Yes"], "Sent": ["No", "Yes", "Yes", "No"] }) # 提取目标值 res = df[df["Sent"] == "Yes"]["Message"].str.extract(r"(\d{3})-Yes")[0].tolist() # 输出结果为 ['155', '045'] - SQL场景(以MySQL为例)
如果数据存储在关系型数据库中,直接用字符串函数查询即可:
查询返回的结果就是你需要的155、045。SELECT SUBSTRING(Message, LOCATE('-Yes', Message) - 3, 3) AS target_num FROM 你的表名 WHERE Sent = 'Yes';
内容的提问来源于stack exchange,提问作者lostcoder
相关产品推荐
相关产品推荐

