如何在pandas中提取含SAT的ID列内-连接数字生成新列
pandas 按规则提取ID列内容生成新字段解决方案
实现逻辑
- 仅处理ID列包含
SAT的行,其余行new_col直接填充NaN - 对包含
SAT的ID,用正则匹配所有「数字-数字」格式的连续片段 - 取最后一个匹配到的符合规则的片段作为返回值,无匹配返回
NaN
实现代码
- 导入依赖
import pandas as pd import numpy as np import re
- 定义提取规则函数
def extract_valid_segment(id_str): if "SAT" not in id_str: return np.nan # 匹配所有数字-数字格式的片段 match_res = re.findall(r"\d+-\d+", id_str) if match_res: # 取最后一个匹配结果符合示例要求 return match_res[-1] return np.nan
- 生成新字段
df["new_col"] = df["ID"].apply(extract_valid_segment)
运行上述代码后得到的new_col和你提供的期望输出完全一致。
内容的提问来源于stack exchange,提问作者nilsinelabore
相关产品推荐
相关产品推荐

