满足多个标准(熊猫)的总和案例

时间:2017-11-05 01:14:25

标签: sql pandas group-by

我需要找到col2中的个案总和,其中对于col1(ABC)中的每个集合,col2值在col3中具有100%的时间。在这种情况下,B1& D1符合此标准,因此N = 2。支持pandas或SQL是有帮助的(两者都是理想的)。

| col1 |  col2 |  col3 |  col4 |  col5 |
|------|-------|-------|-------|-------|
|  A   |   A1  |    N  |  1    |  256  |
|  A   |   B1  |    Y  |  2    |  3    |
|  A   |   C1  |    N  |  3    |  323  |
|  B   |   F1  |    N  |  1    |  89   |
|  B   |   B1  |    Y  |  2    |  256  |
|  C   |   D1  |    Y  |  1    |  3    |
|  D   |   A1  |    N  |  1    |  32   |
|  D   |   C1  |    Y  |  2    |  893  |

2 个答案:

答案 0 :(得分:1)

python pandas中有类似的东西

df.groupby('col2').col3.apply(lambda x : sum(x=='Y')==x.count()).sum()
Out[568]: 2

更多细节:

df.groupby('col2').col3.apply(lambda x : sum(x=='Y')==x.count())
Out[569]: 
col2
A1    False
B1     True
C1    False
D1     True
F1    False
Name: col3, dtype: bool

答案 1 :(得分:1)

我不知道col1与此有什么关系。您可以使用SQL查询执行此操作:

select count(*)
from (select col2
      from t
      where min(col3) = max(col3) and min(col3) = 'Y'
     ) t;