我试图在熊猫中进行嵌套的正则表达式替换,但是我很难捕获正则表达式中的所有嵌套组件。
例如,我想从数据帧的列'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=1
是A
而不是t
。非常感谢您的帮助。
ca t
答案 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
部分。