Pandas从集合创建布尔数据帧

时间:2017-06-27 19:47:49

标签: python pandas dataframe set boolean

我想从集合

创建一个布尔数据帧

所以有4组,每组包含一组名称

a = { a collection of names }
b = { another collection of names}
c = { ... } 
d = { ... }

结果应该是一个如下所示的Dataframe:

 Name   |   a   |   b   |  c    |   d 
 --------------------------------------
'John'  | True  | True  | False | True
'Mike'  | False | True  | False | False
   .
   .
   .

我希望有一种方法可以使用Pandas以高效的方式在Python中执行此操作。

一种方法是选择每个名称并查看每个名称中的名称,然后将该名称添加到Dataframe中。但是应该有更快的方法来合并集合并应用一些函数。

2 个答案:

答案 0 :(得分:1)

我已经汇总了一些应该扩展的随机样本数据:

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

答案 1 :(得分:1)

这是一种可能的方法:

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

pd.DataFrame.from_dict({
    'a': dict.fromkeys(a, True),
    'b': dict.fromkeys(b, True),
}).fillna(False)
          a      b
Jake  False   True
John   True  False
Mike   True   True

dict.fromkeys(..., True)为您提供类似

的内容
{'John': True, 'Mike': True}

此字典在传递给DataFrame时被解释为系列。 Pandas负责对齐索引,因此最终数据框由所有集合的联合索引。