Python 从集合创建布尔数据帧

Python 从集合创建布尔数据帧,python,pandas,dataframe,set,boolean,Python,Pandas,Dataframe,Set,Boolean,我想从集合中创建一个布尔数据帧 因此有4个集合,每个集合包含一组名称 a = { a collection of names } b = { another collection of names} c = { ... } d = { ... } 结果应该是如下所示的数据帧: Name | a | b | c | d -------------------------------------- 'John' | True | True | Fals

我想从集合中创建一个布尔数据帧

因此有4个集合,每个集合包含一组名称

a = { a collection of names }
b = { another collection of names}
c = { ... } 
d = { ... }
结果应该是如下所示的数据帧:

 Name   |   a   |   b   |  c    |   d 
 --------------------------------------
'John'  | True  | True  | False | True
'Mike'  | False | True  | False | False
   .
   .
   .
我想要一种在Python中使用Pandas并以高效的方式实现这一点的方法


一种方法是选择每个名称并查看它是否在每个集合中,然后将该名称添加到数据帧中。但是应该有更快的方法,比如合并集合和应用一些函数。

我已经收集了一些随机样本数据,可以进行缩放:

a = ['foo', 'bob']
b = ['foo', 'john', 'jeff']

df
   name
0  jeff
1  john
2   bob

df['a'] = df.name.isin(a)
df['b'] = df.name.isin(b)

df
   name      a      b
0  jeff  False   True
1  john  False   True
2   bob   True  False

我收集了一些随机样本数据,这些数据应该可以扩展:

a = ['foo', 'bob']
b = ['foo', 'john', 'jeff']

df
   name
0  jeff
1  john
2   bob

df['a'] = df.name.isin(a)
df['b'] = df.name.isin(b)

df
   name      a      b
0  jeff  False   True
1  john  False   True
2   bob   True  False

以下是一种可能的方法:

a = {'John', 'Mike'}
b = {'Mike', 'Jake'}

pd.DataFrame.from_dict({
    'a': dict.fromkeys(a, True),
    'b': dict.fromkeys(b, True),
}).fillna(False)
ab
杰克是假是真
约翰真假
迈克:真的

dict.fromkeys(…,True)
为您提供

{'John': True, 'Mike': True}

当传递到
DataFrame
时,此字典被解释为一个系列。Pandas负责对齐索引,因此最终数据帧通过所有集合的并集进行索引。

以下是一种可能的方法:

a = {'John', 'Mike'}
b = {'Mike', 'Jake'}

pd.DataFrame.from_dict({
    'a': dict.fromkeys(a, True),
    'b': dict.fromkeys(b, True),
}).fillna(False)
ab
杰克是假是真
约翰真假
迈克:真的

dict.fromkeys(…,True)
为您提供

{'John': True, 'Mike': True}

当传递到
DataFrame
时,此字典被解释为一个系列。Pandas负责对齐索引,因此最终的数据帧通过所有集合的并集进行索引。

到目前为止您尝试了什么?请同时发布示例数据。到目前为止,您尝试了什么?请也张贴样本数据。