2017-11-05 7 views
1

col2(ABC)の各セットについて、col2の値が100%の時間でcol3のYを持つcol2のケースの合計を見つける必要があります。この場合、B1 & D1がこの基準を満たしているため、N = 2となります。パンダや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 | 

答えて

1

Pythonのパンダでこのような何か

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

もっと詳しく:私はcol1はこれに関係しているか見ていない

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

。これはSQLクエリで行うことができます:

select count(*) 
from (select col2 
     from t 
     where min(col3) = max(col3) and min(col3) = 'Y' 
    ) t; 
関連する問題