我有由xy两部分组成的单词,其中x可以采用许多值,而y可以为空白或可以采用固定数量的值。

x就像:Apple, Banana, Mango, .... many more

y就像:Buy, Sell, Good

词是: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.replaceSeries.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/

10-10 17:08