如何仅在附加关键字的情况下删除某些单词

时间:2019-02-22 11:38:59

标签: pandas dataframe

这是我的数据

id  keyword
1   transfer
2   atm transfer
3   atm
4   ulta transfer

如果只剩下一个单词,我想删除transfer个单词,但是如果只剩下transfer个单词,则该单词仍然保留,另一个单词是atm,但只有{{ 1}}和atm左边,我们选择transfer

我的预期输出

atm

希望这个问题很清楚

2 个答案:

答案 0 :(得分:2)

使用replace仅适用于mask的过滤值:

df['keyword_2'] = df['keyword'].mask(df['keyword'] != 'transfer', 
                                     df['keyword'].str.replace('transfer', '').str.strip())
print (df)
   id        keyword keyword_2
0   1       transfer  transfer
1   2   atm transfer       atm
2   3            atm       atm
3   4  ulta transfer      ulta

另一种不带分隔线但带有joinsplit的解决方案:

print (df)
   id          keyword
0   1         transfer
1   2     atm transfer
2   3              atm
3   4  ulta transfer v

df['keyword_2'] = [' '.join(y for y in x.split() if y != 'transfer') 
                         if x != 'transfer' else x for x in df['keyword']]

print (df)
   id          keyword keyword_2
0   1         transfer  transfer
1   2     atm transfer       atm
2   3              atm       atm
3   4  ulta transfer v    ulta v

答案 1 :(得分:1)

d['keyword'].apply(lambda x: x.replace('transfer','') if len(x.split(' ')) > 1 else x )

输出

0    transfer
1        atm 
2         atm
3       ulta 
Name: keyword, dtype: object