R语言如何移除数据集MatchID列的T20 #前缀提取数字
移除
MatchID列固定前缀T20 #的实现方法 根据你处理数据用的工具不同,可以选下面几种最简便的方案:
- Python Pandas(适配后续数值分析场景,最常用)
两种稳妥写法,处理完可以直接转成数值类型做计算:- 直接替换固定前缀,适合格式完全统一的数据集:
# 替换固定前缀,regex=False关闭正则提升效率 df['MatchID'] = df['MatchID'].str.replace('T20 # ', '', regex=False) # 可选:转成整数类型方便后续数值计算 df['MatchID'] = df['MatchID'].astype(int)- 正则提取末尾数字,适合偶尔存在前缀多空格、格式小偏差的数据集,鲁棒性更强:
# 提取字段末尾的连续数字,直接转整数 df['MatchID'] = df['MatchID'].str.extract(r'(\d+)$').astype(int) - Excel/WPS等桌面表格工具
两种操作都可以10秒完成批量处理:- 快速填充:在第一行MatchID对应的单元格手动输入目标值(比如第一行是
T20 # 1就手动输1),选中下方所有需要填充的单元格,按快捷键Ctrl+E,软件会自动识别规则完成全列填充。 - 公式法:在空白列对应行输入公式
=SUBSTITUTE(B2,"T20 # ","")(把B2替换成你实际MatchID列的首个数据单元格位置),下拉公式就能批量生成结果,需要数值格式的话套一层VALUE()函数即可。
- 快速填充:在第一行MatchID对应的单元格手动输入目标值(比如第一行是
- SQL查询阶段处理
如果数据是从数据库读取,可以直接在查询时完成清洗,不用导出后再处理,通用写法如下(多数数据库函数名基本一致):SELECT match_date, -- 替换前缀后转成整数类型 CAST(REPLACE(MatchID, 'T20 # ', '') AS UNSIGNED) AS MatchID FROM cricket_match_table; - 纯文本文件批量替换(适合CSV/TSV格式原始数据)
用VS Code、Notepad++这类支持正则替换的文本编辑器打开原始数据文件,打开查找替换面板:- 简单场景直接查找
T20 #,替换内容留空,点全部替换即可; - 怕误替换其他列的相同文本,可以开启正则匹配模式,查找内容填
(\t)T20 # (\d+),替换内容填$1$2,只会匹配制表符分隔后、MatchID字段位置的前缀内容,不会影响其他字段。
- 简单场景直接查找
内容的提问来源于stack exchange,提问作者drumtr
相关产品推荐
相关产品推荐

