2 回答

TA贡献1796条经验 获得超4个赞
如果您不坚持使用一行解决方案,您可以将句子分成几部分,只保留有效单词并重新组合在一起:
extract = df['Who'].str.extractall('([^ ]+)')
ok = extract.isin(positive_list)[0].values
df['Who'] = extract.loc[ok, :].groupby(level=0).agg(' '.join)

TA贡献1786条经验 获得超13个赞
这个解决方案比 Joerg (+1) 的解决方案简洁得多,但对我来说更容易理解(因为我没有关于 extractall pandas 系列函数的先验知识)。它只是在迭代时创建一个新列表并替换旧列表:
import pandas as pd
whoList=['cute little bear', 'a quick brown fox', 'a bear and a fox']
df=pd.DataFrame({'Who':whoList})
positive_list = ['bear', 'fox']
newStringList=[]
for who in whoList:
newStringList.append('')
for i in positive_list:
if i in who:
newStringList[-1]=newStringList[-1]+i+" "
df['Who']=newStringList
添加回答
举报