You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从数据列提取指定长度连续数字?无匹配则返回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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:05:37