如何从数据列提取指定长度连续数字?无匹配则返回NA
提取指定长度连续数字(无则返回NA)
原始数据(Have)
example1 example2 11-2001-6 st3829s 11-2001-6 s8290s 11-201-6 sts39
期望输出(Want)
example1 example2 2001 3829 2001 8290 NA NA
解决方案
R语言实现
借助stringr包的正则匹配功能,精准提取4位连续数字,无匹配项自动返回NA:
library(stringr) # 构建数据框 df <- data.frame( example1 = c("11-2001-6", "11-2001-6", "11-201-6"), example2 = c("st3829s", "s8290s", "sts39"), stringsAsFactors = FALSE ) # 逐列提取4位连续数字 df$example1 <- str_extract(df$example1, "\\d{4}") df$example2 <- str_extract(df$example2, "\\d{4}") print(df)
Python实现
用pandas结合正则提取,无匹配项填充为NA:
import pandas as pd # 构建数据框 data = { "example1": ["11-2001-6", "11-2001-6", "11-201-6"], "example2": ["st3829s", "s8290s", "sts39"] } df = pd.DataFrame(data) # 提取4位连续数字,无匹配项替换为NA df = df.apply(lambda col: col.str.extract(r'(\d{4})', expand=False)).fillna("NA") print(df)
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

