如何将多列重复的DataFrame正则清洗代码简化为一行?
解决方案
直接使用Pandas的applymap方法结合列范围选择,一行代码完成批量处理:
import re df.loc[:, 'Two':'Ten'] = df.loc[:, 'Two':'Ten'].applymap(lambda x: re.sub(r'\W+', ' ', str(x)))
关键说明
df.loc[:, 'Two':'Ten']:精准选中从Two到Ten的所有列(Pandas支持按列名连续切片,只要列名在DataFrame中是连续排列的)applymap():针对DataFrame的每个元素应用处理函数,相比循环遍历列再用map更简洁高效str(x):确保将元素转为字符串类型,避免非字符串数据(如数字)传入re.sub时报错- 直接赋值回原DataFrame的对应列,完成批量修改
扩展优化(适配未来列增加)
如果后续新增列的命名符合类似规则(比如都是首字母大写的英文单词),可以用正则筛选列,不用固定列范围:
df.loc[:, df.columns.str.match(r'^[A-Z][a-z]+$')] = df.loc[:, df.columns.str.match(r'^[A-Z][a-z]+$')].applymap(lambda x: re.sub(r'\W+', ' ', str(x)))
内容的提问来源于stack exchange,提问作者Veera
相关产品推荐
相关产品推荐

