Python将从列表中删除包含值的行

Python将从列表中删除包含值的行,python,pandas,Python,Pandas,我正在比较两个大型CSV和熊猫,它们都包含联系信息。我想从一个CSV中删除包含另一个CSV中任何电子邮件地址的任何行 所以如果我有 DF1 DF2 我会留下 DF3 除了电子邮件地址,我不关心任何栏目。这似乎很容易,但我真的很难做到这一点 这是我所拥有的,但我认为这还不够: def remove_warm_list_duplicates(dataframe): '''Remove rows that have emails from the warmlist''' warm_li

我正在比较两个大型CSV和熊猫,它们都包含联系信息。我想从一个CSV中删除包含另一个CSV中任何电子邮件地址的任何行

所以如果我有

DF1

DF2

我会留下

DF3

除了电子邮件地址,我不关心任何栏目。这似乎很容易,但我真的很难做到这一点

这是我所拥有的,但我认为这还不够:

def remove_warm_list_duplicates(dataframe):
    '''Remove rows that have emails from the warmlist'''
    warm_list = pd.read_csv(r'warmlist/' + 'warmlist.csv'
                            , encoding="ISO-8859-1"
                            , error_bad_lines=False)
    warm_list_emails = warm_list['Email Address'].tolist()
    dataframe = dataframe[dataframe['Email Address'].isin(warm_list_emails) == False]
试试这个:

In [143]: pd.merge(df1, df2[['email']], on='email', how='left', indicator=True) \
            .query("_merge == 'left_only'") \
            .drop('_merge',1)
Out[143]:
   name  phone      email
0     1      1  hi@hi.com

您可以使用
unique()
和集合简化一些:

warm_list = pd.read_csv(r'warmlist/' + 'warmlist.csv',
                        encoding="ISO-8859-1",
                        error_bad_lines=False)

warm_list_emails = set(warm_list['Email Address'].unique())
df = df.loc[df['Email Address'].isin(warm_list_emails), :]
您可以使用pandas-isin()

结果df

    name    phone   email
0   1       1       hi@hi.com

这是我的答案,但我认为有几种方法是有效的。
In [143]: pd.merge(df1, df2[['email']], on='email', how='left', indicator=True) \
            .query("_merge == 'left_only'") \
            .drop('_merge',1)
Out[143]:
   name  phone      email
0     1      1  hi@hi.com
warm_list = pd.read_csv(r'warmlist/' + 'warmlist.csv',
                        encoding="ISO-8859-1",
                        error_bad_lines=False)

warm_list_emails = set(warm_list['Email Address'].unique())
df = df.loc[df['Email Address'].isin(warm_list_emails), :]
df3 = df1[~df1['email'].isin(df2['email'])]
    name    phone   email
0   1       1       hi@hi.com