gpt4 book ai didi

python - 删除 pandas DataFrame 中的行,其中该行包含列表中存在的字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 11:26:20 25 4
gpt4 key购买 nike

我知道如何从单列('From')pandas DataFrame 中删除行,其中该行包含一个字符串,例如给定 dfsomestring:

df = df[~df.From.str.contains(someString)]

现在我想做类似的事情,但这次我想删除包含另一个 list 的任何元素中的字符串的所有行。如果我不使用 pandas,我会使用 forif ... not ... in 方法。但是我该如何利用 pandas 自身的功能来实现这一目标呢?给定要删除的项目列表 ignorethese,从逗号分隔字符串文件中提取EMAILS_TO_IGNORE,我尝试:

with open(EMAILS_TO_IGNORE) as emails:
ignorethese = emails.read().split(', ')
df = df[~df.From.isin(ignorethese)]

我是不是先把文件分解成一个列表才把事情搞得一团糟?鉴于它是一个由逗号分隔值组成的纯文本文件,我可以用更简单的方法绕过它吗?

最佳答案

Series.str.contains支持正则表达式,您可以通过使用 | 对它们进行 OR 从您的电子邮件列表中创建一个要忽略的正则表达式,然后在 contains 中使用它.示例 -

df[~df.From.str.contains('|'.join(ignorethese))]

演示 -

In [109]: df
Out[109]:
From
0 Grey Caulfu <grey.caulfu@ymail.com>
1 Deren Torculas <deren.e.torcs87@gmail.com>
2 Charlto Youna <youna.charlto4@yahoo.com>

In [110]: ignorelist = ['grey.caulfu@ymail.com','deren.e.torcs87@gmail.com']

In [111]: ignorere = '|'.join(ignorelist)

In [112]: df[~df.From.str.contains(ignorere)]
Out[112]:
From
2 Charlto Youna <youna.charlto4@yahoo.com>

请注意,如the documentation所述它使用 re.search() .

关于python - 删除 pandas DataFrame 中的行,其中该行包含列表中存在的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32644804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com