pandas - 如何仅在不删除关键字重复的情况下删除附加关键字的某些单词

标签 pandas dataframe

这是我的数据

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

我想删除transfer这个词,如果没有一个词剩下,但是如果只剩下transfer个词,这个词仍然存在,其他词是atm,但如果只剩下atmtransfer,我们选择atm,如果关键字出现多次,请做一次

这是代码

df['keyword_2'] = df['keyword'].mask(df['keyword'] != 'transfer', df['keyword'].str.replace('transfer', '').str.strip())

我的输出

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

我的预期输出

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

希望这个问题足够清楚

最佳答案

比较按空格分割的值与集合和按 numpy.where 设置的值:

mask = df['keyword'].str.split().apply(set) != set(['transfer'])
df['keyword1'] = np.where(mask, df['keyword'].str.replace('transfer', '').str.strip(), 
                                'transfer')
print (df)
   id            keyword  keyword1
0   1           transfer  transfer
1   2       atm transfer       atm
2   3                atm       atm
3   4      ulta transfer      ulta
4   5  transfer transfer  transfer

关于pandas - 如何仅在不删除关键字重复的情况下删除附加关键字的某些单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54864140/

相关文章:

r - 基于逗号聚合列

python - 在 python 中按数据框分组并在多列上连接字符串

r - 根据 r 中列的值添加缺失值

python - 如何向目录中的所有 CSV 文件批量添加列标题并保留这些文件?

python - 向 pandas 绘图添加小刻度

python - Pandas - 基于每列的前 x% 值,标记为新数字

python - Pandas.mean() 类型错误 : Could not convert to numeric

r - 将R中不完整的数据帧组合成矩阵

python - 等效于 Python pandas 中的 'mutate_at' dplyr 函数

python - 使用 groupby 过滤掉特定列中全部为 NaN 的行