如何从Pandas DataFrame非规范数据中提取NEX+数字序列并转大写?
解决方案
要从PROGRAM列提取包含“NEX”(不区分大小写)且后续跟随数字的序列,并转为大写存入新列NEX,可以通过Pandas字符串方法结合正则表达式实现:
import pandas as pd # 创建DataFrame data = { 'ID':[1,2,3,4,5], 'PROGRAM': [ 'nbu 123456', 'NBU-123456', 'nex999999 b12', 'NXE999999 123', 'NBU123456 NEX999999'] } df = pd.DataFrame(data) # 提取目标序列并转大写 df['NEX'] = df['PROGRAM'].str.extract(r'(?i)(nex\d+)', expand=False).str.upper() print(df)
代码说明
(?i):正则的不区分大小写标记,可匹配nex、NEX、Nex等任意大小写组合nex\d+:精准匹配连续的nex(不区分大小写)后跟至少一位数字的序列str.extract:提取匹配到的内容,expand=False返回Series格式便于直接赋值给新列str.upper():将提取结果统一转为大写
输出结果
ID PROGRAM NEX 0 1 nbu 123456 NaN 1 2 NBU-123456 NaN 2 3 nex999999 b12 NEX999999 3 4 NXE999999 123 NaN 4 5 NBU123456 NEX999999 NEX999999
如果需要将无匹配项的NaN替换为空字符串,可在代码末尾添加.fillna(''):
df['NEX'] = df['PROGRAM'].str.extract(r'(?i)(nex\d+)', expand=False).str.upper().fillna('')
内容的提问来源于stack exchange,提问作者Lee Murray
相关产品推荐
相关产品推荐

