熊猫:如何消除值以特定字符结尾的行?

Blu*_*oon 4 python string dataframe pandas

我有一个熊猫数据帧如下:

mail = DataFrame({'mail' : ['adv@gmail.com', 'fhngn@gmail.com', 'foinfo@yahoo.com', 'njfjrnfjrn@yahoo.com', 'nfjebfjen@hotmail.com', 'gnrgiprou@hotmail.com', 'jfei@hotmail.com']})
Run Code Online (Sandbox Code Playgroud)

看起来像:

                    mail
0          adv@gmail.com
1        fhngn@gmail.com
2       foinfo@yahoo.com
3   njfjrnfjrn@yahoo.com
4  nfjebfjen@hotmail.com
5  gnrgiprou@hotmail.com
6       jfei@hotmail.com
Run Code Online (Sandbox Code Playgroud)

我想要做的是过滤掉(消除)列邮件中的值以“@gmail.com”结尾的所有行。

Ale*_*ley 7

您可以使用str.endswith和否定布尔系列的结果~:

mail[~mail['mail'].str.endswith('@gmail.com')]
Run Code Online (Sandbox Code Playgroud)

其中产生:

                    mail
2       foinfo@yahoo.com
3   njfjrnfjrn@yahoo.com
4  nfjebfjen@hotmail.com
5  gnrgiprou@hotmail.com
6       jfei@hotmail.com
Run Code Online (Sandbox Code Playgroud)

Pandas 有许多其他矢量化字符串操作,可以通过访问器访问.str。Python 自己的字符串方法可以立即熟悉其中的许多方法,但它们将内置于NaN值的处理中。