Python 将字典列表与dataframe进行比较,显示缺少的值

Python 将字典列表与dataframe进行比较,显示缺少的值,python,pandas,Python,Pandas,我有一份字典清单 example_list = [{'email':'myemail@email.com'},{'email':'another@email.com'}] 以及带有“电子邮件”列的数据框 我需要将列表与数据帧进行比较,并返回不在数据帧中的值 我当然可以遍历列表,检查数据帧,但我正在寻找一种更具python风格的方法,可能使用列表理解,或者在数据帧中使用map函数?来返回那些不在数据帧中的值。电子邮件,这里有两个选项涉及设置差异操作- np.setdiff1d set.diff

我有一份字典清单

example_list = [{'email':'myemail@email.com'},{'email':'another@email.com'}]
以及带有“电子邮件”列的数据框

我需要将列表与数据帧进行比较,并返回不在数据帧中的值


我当然可以遍历列表,检查数据帧,但我正在寻找一种更具python风格的方法,可能使用列表理解,或者在数据帧中使用map函数?

来返回那些不在数据帧中的值。电子邮件,这里有两个选项涉及设置差异操作-

np.setdiff1d

set.difference

一种方法是从另一个
集合中获取一个
。对于功能解决方案,您可以使用
运算符。itemgetter

from operator import itemgetter

res = set(map(itemgetter('email'), example_list)) - set(df['email'])

-
集合的语法糖。差异

我最终将列表转换为一个数据帧,通过将两个数据帧合并到一列来比较它们,然后用缺少的值创建一个数据帧

比如说

    example_list = [{'email':'myemail@email.com'},{'email':'another@email.com'}]
    df_two = pd.DataFrame(item for item in example_list)
    common = df_one.merge(df_two, on=['Email'])
    df_diff = df_one[(~df_one.Email.isin(common.Email))]

set
方法可以使用元素散列。但是显然,
df['Email']
不是预先散列的。所以我的问题是散列是隐式发生的,还是根本不发生?@jpp啊,我明白了。。。是的,在大多数情况下,像这样构建会更快,经验表明。。。试试看!下面的答案之一有用吗?如果是这样,考虑一下(左边的绿色蜱),或者要求澄清。
from operator import itemgetter

res = set(map(itemgetter('email'), example_list)) - set(df['email'])
    example_list = [{'email':'myemail@email.com'},{'email':'another@email.com'}]
    df_two = pd.DataFrame(item for item in example_list)
    common = df_one.merge(df_two, on=['Email'])
    df_diff = df_one[(~df_one.Email.isin(common.Email))]