Python中如何为pandas的str.replace()设置多个待替换字符串条件
Pandas 多指定子串批量删除方案
pandas.Series.str.replace() 默认支持正则表达式匹配,你只需要将所有需要删除的子串按长串优先的顺序拼接为正则「或」模式,就可以实现一次性批量替换,避免短串先匹配导致长串删不干净的问题。
完整实现代码
import pandas as pd # 示例DataFrame df_1 = pd.DataFrame({'id': ['001', '002', '003', '004', '005', '006', '007', '008'], 'color_value': ['blue_test', 'red', 'yellow_tests', 'orange_orig', 'blue_new','red', 'blue_testing', 'orange']}) # 按长度从长到短定义要删除的子串,避免短串优先匹配导致残留 remove_terms = ['testing', 'tests', 'test', 'orig', 'new'] # 拼接为正则匹配模式 pattern = '|'.join(remove_terms) # 批量将匹配到的子串替换为空 df_1['color_value'] = df_1['color_value'].str.replace(pattern, '', regex=True)
运行结果
执行后df_1['color_value']的输出如下:
0 blue_ 1 red 2 yellow_ 3 orange_ 4 blue_ 5 red 6 blue_ 7 orange Name: color_value, dtype: object
可选优化
如果需要同步删除子串前附带的下划线,避免输出残留_符号,可以调整正则模式为:
pattern = f"_({'|'.join(remove_terms)})"
替换后color_value列的结果会直接变成blue、yellow、orange这类干净值。
内容的提问来源于stack exchange,提问作者MAtennis9
相关产品推荐
相关产品推荐

