我有由x
和y
两部分组成的单词,其中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.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/