我的单词由两部分组成:x
和 y
,其中 x
可以采用多个值 & y
可以为空,也可以采用固定数量的值。
x 就像:苹果、香蕉、芒果......还有更多
y 就像:买、卖、好
单词是:AppleBuy、BananaGood、Mango、MangoSell
输入df
Name
AppleBuy
BananaGood
Mango
MangoSell
Apple Buy
预期 DF
Name
Apple
Banana
Mango
Mango
Apple
代码:
df['Name'] = df['Name'].str.replace('AppleBuy','Apple').str.replace('BananaGood','Banana')
问题
上面的代码工作正常,但问题是如果明天有一个新的 x 出现,那么上面的代码就会失败。
我可以有一些动态的东西来获得预期的输出,而不管 x 的值如何。
最佳答案
使用Series.str.replace
或Series.str.extract
:
y = ['Buy','Sell','Good']
df['Name'] = df['Name'].str.replace('|'.join(y), '').str.strip()
print (df)
Name
0 Apple
1 Banana
2 Mango
3 Mango
或者:
x = ['Apple','Banana','Mango']
df['Name'] = df['Name'].str.extract('(' + '|'.join(x) + ')', expand=False)
print (df)
Name
0 Apple
1 Banana
2 Mango
3 Mango
如果想要带有大写分隔符的值:
df['Name'] = df['Name'].str.extract('([A-Z][a-z]*)')
print (df)
Name
0 Apple
1 Banana
2 Mango
3 Mango
关于python - 动态删除单词的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55352070/