嵌套正则表达式替换与熊猫循环

时间:2019-06-21 04:51:13

标签: python regex pandas

我试图在熊猫中进行嵌套的正则表达式替换,但是我很难捕获正则表达式中的所有嵌套组件。

例如,我想从数据帧的列'ba'中删除'ba ca'A的所有实例。但是我不能删除'ba'的{​​{1}}部分,而只能删除'ca',因为我认为"ba ca"嵌套在'ba'

'ba ca'

我希望列df = pd.DataFrame({'A': ['ba t', 'ba ca t', 'foo', 'ba it'],'B': ['abc','abc', 'bar', 'xyz']}) replace_list=['ba','ba ca'] for i in replace_list: df=df.replace({'A': r'^({})'.format(i)}, {'A': ''}, regex=True) df 的行index=1A而不是t。非常感谢您的帮助。

ca t

1 个答案:

答案 0 :(得分:3)

使replace_list成为单个正则表达式:

df['A'].str.replace('|'.join(replace_list[::-1]), '').str.strip()

输出:

0      t
1      t
2    foo
3     it
Name: A, dtype: object

请注意颠倒的replace_list,以便它先检查ba ca,然后再检查ba,这样就不会留下ca部分。