如何一次性批量替换多列(含Sname系列)中的相似字符值?
批量替换含指定关键词列中的相似拼写值
核心思路
不用循环,直接通过列名筛选定位目标列,再用正则表达式批量替换所有相似拼写错误。
具体实现(以Python Pandas为例)
- 筛选所有包含"Sname"的列:用
filter(like='Sname')直接提取目标列,无需手动列枚举或循环。 - 正则匹配相似拼写:针对ORANGE、Orangee、ornage这类大小写/拼写变体,用不区分大小写的正则规则匹配,统一替换为正确值。
import pandas as pd # 加载数据(替换成你的数据读取方式) df = pd.read_csv('your_data_source.csv') # 一步定位所有含"Sname"的列 target_columns = df.filter(like='Sname').columns # 批量替换所有相似拼写错误,替换值可按需修改 df[target_columns] = df[target_columns].replace( r'(?i)or[a-z]*ge', # 匹配不区分大小写、or开头ge结尾的所有变体 'Orange', # 替换为正确的拼写 regex=True ) # 如果只想替换指定的错误拼写(更精准),可以把正则改成: # r'(?i)(ORANGE|Orangee|ornage)' # 保存修改后的数据 df.to_csv('processed_data.csv', index=False)
说明
filter(like='Sname')会自动匹配所有列名中包含"Sname"的列,不管前缀是数字还是空,完美覆盖你提到的"Sname1"-"Sname5"和"3Sname1"-"24Sname5"。- 正则中的
(?i)表示不区分大小写,or[a-z]*ge匹配任何以or开头、ge结尾的字母组合,能覆盖大部分拼写变体;如果需要更严格的匹配,直接列出所有错误拼写即可。
内容的提问来源于stack exchange,提问作者NoobR
相关产品推荐
相关产品推荐

