gpt4 book ai didi

python - 如何使用正则表达式和条件替换 Pandas 列中的值

转载 作者:行者123 更新时间:2023-11-28 22:16:35 33 4
gpt4 key购买 nike

我正在尝试使用正则表达式替换 Pandas 列(数据框)中的某些值,但我想根据另一列中的值应用正则表达式。

一个基本的例子;

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 警告,它什么都不做。有替代方法吗?

最佳答案

为了避免chained assignments重新分配并删除 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

关于python - 如何使用正则表达式和条件替换 Pandas 列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52091011/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com