2016-11-01 11 views
2

私はPandasのgroupby関数を使用してExcelデータから結果を得ています。そのために私のコードは次のとおりです。Python Pandasでのデータ抽出

results = df.groupby(['Test Result', 'Risk Rating']).size().unstack(fill_value=0) 
この表の形で私の結果を与えている

:私はちょうど与えるべきであるすべての「FAIL」の結果を取得したい、今すぐ

Risk Rating CRITICAL HIGH LOW MEDIUM 
Test Result 
FAIL    8  0 9  4 
PASS    0 13 23  37 
SKIP    2  0 0  0 

私:私を与える必要があります

Risk Rating CRITICAL HIGH LOW MEDIUM 
Test Result 
FAIL    8  0 9  4 

そして、ちょうどCRITICALと、 "FAIL":

Risk Rating CRITICAL 
Test Result 
FAIL    8  

これをどうすれば実現できますか?どんな助けもありがとう。

答えて

3

利用の.loc

results.loc['Fail'] 

が '緊急' レベル '失敗'

results.loc['Fail', 'Critical'] 

はインデックス列のための '失敗' の値を返しますインデックスの値を返します

することができます複数の列またはインデックスのパスリストには次のものがあります。

results.loc['Fail', ['Critical','HIGH']] 
1

は、私はあなたがix必要だと思うものを返却Seriesまたはスカラー値:DataFrameを返す必要があれば

df1 = df.ix['FAIL'] 
print (df1) 
Risk Rating 
CRITICAL 8 
HIGH  0 
LOW   9 
MEDIUM  4 
Name: FAIL, dtype: int64 

df1 = df.ix['FAIL', 'CRITICAL'] 
print (df1) 
8 

より複雑である - 使用boolean indexingixと:

df1 = df.ix[df.index == 'FAIL', :] 
print (df1) 
Risk Rating CRITICAL HIGH LOW MEDIUM 
Test Result        
FAIL    8  0 9  4 

df1 = df.ix[df.index == 'FAIL', ['CRITICAL']] 
print (df1) 
Risk Rating CRITICAL 
Test Result   
FAIL    8