我想删除pandas数据框中的子字符串,而只保留出现在positiv列表中的那些子字符串部分。
相反,我设法做到这一点:删除出现在否定列表中的字符串的所有部分。
df['Who'] = ['cute little bear', 'a quick brown fox', 'a bear and a fox']
negative_list = ['cute', 'little', 'a', 'quick', 'brown'. 'and']
positive_list = ['bear', 'fox']
for n in negative_list:
df['Who'] = d['Who'].str.replace(n, '', re.IRNORECASE)
现在结果将符合预期:
df['Who'] = ['bear', 'fox', 'bear fox']
我正在寻找一种解决方案,我可以仅使字符串出现在肯定列表中,而不删除长度超过英里的否定列表。
答案 0 :(得分:2)
如果您不坚持采用单行解决方案,则可以将句子分成几部分,只保留有效单词,然后再将它们放在一起:
<script>
var tacos = ['beef', 'chicken', 'soft', 'hard', 'With nacho cheese']
_.shuffle([tacos]);
console.log(_.shuffle(tacos));
</script>
答案 1 :(得分:1)
此解决方案比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