正则表达式将仅在DataFrame中包含子字符串的字符串替换为子字符串

时间:2019-10-13 05:45:24

标签: python regex dataframe replace

我正在尝试将Python数据框列中包含特定子字符串的所有字符串替换为仅子字符串本身。最好是结果为“ inplace = True”。

我尝试了各种正则表达式,但是不幸的是,由于这是我的新手,所以我尝试过的所有方法都没有达到预期的效果。我使用的是Python 3.7.3。

我认为我需要在数据框中进行替换的代码是

df.replace(to_replace = regex表达式,用于标识包含子字符串的字符串中的子字符串,value ='substring',regex = True)。所以下面是我正在尝试做的一个例子

#original dataframe
import pandas as pd

df = pd.DataFrame({'brand':['brand1 & brand2','brand1/brand3','brand4 brand3','brand1 and brand 6']})
df

    brand
0   brand1 & brand2
1   brand6
2   brand1/brand3
3   brand9
4   brand4 brand3
5   brand8
6   brand1 and brand6

#desired result

df

    brand
0   brand1
1   brand6
2   brand1
3   brand9
4   brand4 brand3
5   brand8
6   brand1

到目前为止,我的regex表达式没有改变。只是注意,品牌名称实际上并不包括1-9,以避免任何可能的混淆。我要处理的实际df行略多于1万行,但是在列中包含brand1的'brands'字符串约占10k的2k行,我需要仅用'brand1'替换所有包含brand1的字符串。

1 个答案:

答案 0 :(得分:0)

使用:

df['brand'] = np.where(df['brand'].str.contains('brand1'), 'brand1',df['brand'])

输入

    brand
0   brand1 & brand2
1   brand6
2   brand1/brand3
3   brand9
4   brand4 brand3
5   brand1 and brand 6

输出

    brand
0   brand1
1   brand6
2   brand1
3   brand9
4   brand4 brand3
5   brand1