我正在尝试将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的字符串。
答案 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