我有一个3列的数据框,我想删除所有行,其中包含字符串(搜索键)的一部分。
我dataframe:
user_name user_first_name user_email
Max Mustermann max.musterman@gmail.com
Tom Hans tom.musterman@web.de
Tom1 Hans1 tom.musterman@test.de
我的搜索关键词是:@gmail.com, @web.de
df = df[~df['user_email'].isin(['*@gmail.com'])]
不行,因为我需要写准确的电子邮件地址。
使用str.endswith
:
df = df[~df['user_email'].str.endswith('@gmail.com')]
user_name user_first_name user_email
1 Tom Hans tom.musterman@web.de
2 Tom1 Hans1 tom.musterman@test.de
或支持regex的str.contains
:
df = df[~df['user_email'].str.contains('.*@gmail.com$')]
user_name user_first_name user_email
1 Tom Hans tom.musterman@web.de
2 Tom1 Hans1 tom.musterman@test.de
您的列表暗示您可能希望传递多个条件,因此str.contains
可能是最好的选择,使用|
来分隔条件:
df = df[~df['user_email'].str.contains('.*@gmail.com$|.*@web.de$')]
user_name user_first_name user_email
2 Tom1 Hans1 tom.musterman@test.de