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
添加回答
舉報