Python使用lambda函数实现pandas DataFrame多字符串批量替换
错误原因
你写的代码中,apply() 传入的参数是 lambda x: x.replace(i, '') for i in ['+','-','tel:'],这是一个生成器表达式,而apply()要求传入可调用的函数对象,因此抛出对应类型错误。
一行代码实现方案
方案1:直接替换所有非数字字符(最简洁)
直接匹配所有非数字字符删除,完全匹配你的需求:
df['tel_no'] = df['tel_no'].str.replace(r'\D', '', regex=True)
方案2:按指定字符列表逐个替换
如果你需要严格按照你指定的['+','-','tel:']列表来替换,可借助functools.reduce在lambda内部实现循环替换:
from functools import reduce df['tel_no'] = df['tel_no'].apply(lambda x: reduce(lambda cur, old: cur.replace(old, ''), ['+','-','tel:'], x))
内容的提问来源于stack exchange,提问作者jay
相关产品推荐
相关产品推荐

