【问题标题】:Pandas boolean dataframe creation from sets从集合创建 Pandas 布尔数据框
【发布时间】:2017-06-27 19:47:48
【问题描述】:

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

所以有 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
   .
   .
   .

我想要一种在 Python 中使用 Pandas 并以高效的方式执行此操作的方法。

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

【问题讨论】:

  • 到目前为止您尝试过什么?另请发布示例数据。

标签: python pandas dataframe set boolean


【解决方案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

【讨论】:

    【解决方案2】:

    这是一种可能的方法:

    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 负责对齐索引,因此最终数据帧由所有集合的并集索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2017-07-03
      • 2016-05-17
      • 1970-01-01
      • 2019-02-03
      • 2018-03-02
      相关资源
      最近更新 更多