我想从集合
创建一个布尔数据帧所以有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中。但是应该有更快的方法来合并集合并应用一些函数。
答案 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负责对齐索引,因此最终数据框由所有集合的联合索引。