2016-08-01 36 views
2

给定文档术语熊猫数据框。每个单元格由一个出现矩阵表示。Python Pandas - 如何在一组行中选择列的所有列中包含1的最小列数

  clover seed sowing stolon 
    1489  1  0  0  0 
    1488  1  0  0  0 
    9677  0  0  1  0 
    9996  1  0  0  1 
    0557  0  1  0  0 
    0564  1  0  0  0 
    0958  0  1  1  0 
    1272  1  0  0  0 
    1965  1  1  1  1 
    4326  1  1  1  0 
    4531  1  1  1  0 
    6026  0  0  1  0 
    6030  0  1  0  0 

对于第一列“clover”,将DataFrame减少到最少3行,其中包含1的所有列。在当前示例中三叶草,种子,播种包含3排1965,4326 1S,4531.结果将是:

  clover seed sowing stolon 
    1272  1  0  0  0 
    1965  1  1  1  1 
    4326  1  1  1  0 
    4531  1  1  1  0 

掉落无关柱:

  clover seed sowing 
    1272  1  0  0 
    1965  1  1  1 
    4326  1  1  1 
    4531  1  1  1 

对于任何数量的列如何以有效的方式执行此选择过程。

+0

请发布所需的df –

回答

0

我会做这样的:

relevant = ['clover', 'seed', 'sowing'] 
df[df[relevant].all(1)][relevant] 

enter image description here

0

另一种可能性是使用df.sum(axis=1)>=3作为掩模。链drop这样:

>>> df[df.sum(axis=1)>=3].drop('stolon', axis=1) 
     clover seed sowing 
1965  1  1  1 
4326  1  1  1 
4531  1  1  1 

为了使这个更一般的:对于n列与n取代3。您可以通过传递一个列表来删除多个列。 drop(['stolon','seed'])

相关问题