我有一个字符串列表,我试图在其中搜索熊猫DF列,并删除包含该列表元素的所有行。
这是用于搜索特定列,然后删除包含引号的文本子字符串的行的代码。在这种情况下,将删除Owner_Name列中所有包含“ dave”的行。完全符合预期,这本身就很好。
df = df[~df.Owner_Name.str.contains('dave')
当我尝试在54个左右的元素列表中自动执行此操作时,它被挂起,仅删除了部分但不是全部。知道为什么吗? 这是我用于循环的简单代码(模拟显示我在做什么,而不是我的实际代码):
badWords= ['random stuff','code words','secret squirrel','blue','black','dave']
for word in badWords:
df = df[~df.Owner_Name.str.contains(word)]
print('Total Rows Left',df.shape[0], word)
我没有收到任何错误,但是它确实无法如我所愿。例如,在循环之后,即使在Owner_Name列中仍存在“ dave”元素,即使它在整个列表中循环。我什至放了面包屑来调出要传递的元素,所以它正在执行循环,但是好像str.contains('')在删除行时无法正常工作。我确保在df中也使所有内容都与列表对象的大小写匹配,因此这不应该成为问题。我真的很困惑,找不到关于此特定问题的任何信息。
答案 0 :(得分:1)
在这里添加有效的答案
badWords= ['random stuff','code words','secret squirrel','blue','black','dave']
for word in badWords:
df = df[~df.Owner_Name.str.contains(word,case=False)]
print('Total Rows Left',df.shape[0], word)