2017-01-23 59 views
2

我有一種感覺,有一種簡單的方法來做到這一點...我有一個數據幀如下:蟒蛇+數據幀+數項基於布爾

df1 = 
    Index A  B  C 
    0  5  7  11 
    1  10 7  11 

我想圖如何:

df1['Index'==1][<10].count() 

即,對於指數= 1,返回的值的數量< 10(所以應該返回1)

謝謝!

回答

2

你可以使用DF.query()如下選擇:(假設你要查詢可以複製的指數軸)

df1.query("Index == 1").lt(10).sum(1)  # assuming the index name as "Index" 
Out[56]: 
Index 
1 1 
dtype: int64 

這是.loc相當於語法:

df1.loc[df1.index==1].lt(10).sum(1) 
Out[58]: 
Index 
1 1 
dtype: int64 
+1

感謝爲了這。你介意解釋lt部分嗎?起初我認爲它的意思是「不到」,但看起來不像。 – keynesiancross

+0

它確實通過創建布爾邏輯來檢查小於條件,其中'True'表示成功並且'False'失敗。這些'bools'然後可以被相加,因爲它們分別象徵'int'1&0。特別是在'Pandas'和'NumPy'中,涉及('<','==','>'等)的比較返回一個布爾掩碼作爲輸出。 –

1

爲此,您可以使用.loc,您當前的索引嘗試有點難以理解。

In[32]: df.loc[1].lt(10).sum() 
Out[32]: 1