我试图使用正则表达式替换熊猫列(数据框)中的某些值,但是我想基于另一列中的值应用正则表达式。
一个基本的例子;
index col1 col2
1 yes foobar
2 yes foo
3 no foobar
使用以下内容;
df.loc[df['col1'] == 'yes', 'col2'].replace({r'(fo)o(?!bar)' :r'\1'}, inplace=True, regex=True)
我期望得到以下结果;
index col1 col2
1 yes foobar
2 yes fo
3 no foobar
但是它似乎不起作用?它不会引发任何错误或settingwithcopy
警告,它什么也不做。有替代方法吗?
为了避免链接分配,请分配并删除inplace=True
:
mask = df['col1'] == 'yes'
df.loc[mask, 'col2'] = df.loc[mask, 'col2'].replace({r'(fo)o(?!bar)' :r'\1'}, regex=True)
print (df)
col1 col2
1 yes foobar
2 yes fo
3 no foobar
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句