2015-06-01 233 views
1

我正在尋找一種方法來運行兩個條件熊貓DataFrame groupby方法。我有很多日誌來解析,我有以下單一條件groupby方法,但有沒有辦法有兩個條件groupby方法?Python熊貓兩個條件數據框groupby運行排序

DF[DF['Feature Enabled'] == 1].groupby([’Feature Active'])[['Value1','Value2']].mean() 

有沒有辦法打印運行GROUPBY當前日誌,因爲我經歷的每個文件,像...

DF[DF['Iteration'] == CURRENTLOG_ID and DF['Feature Enabled'] == 1].groupby([’Feature Active'])[['Value1','Value2']].mean() 

這將幫助我繪製到Excel中的每個日誌爲後我一起去處理一個日誌目錄。

感謝

回答

2

要使用多個條件,你需要使用逐位&,而不是and,你也需要用括號括由於運算符優先級的條件:

DF[(DF['Iteration'] == CURRENTLOG_ID) & (DF['Feature Enabled'] == 1)].groupby([’Feature Active'])[['Value1','Value2']].mean() 

應該工作

+0

謝謝EdChum ...再次:),我是在正確的道路上,但有一些括號不合適。 – MikG

+1

不用擔心,記住你在比較數組的時候不能使用'和',''''和'not',你必須分別使用'&','''和'〜',並用括號括起來 – EdChum

+0

謝謝你,好建議。到達基本水平高原後,我正在慢慢攀登Python學習階梯,然後我決定看看熊貓! – MikG

1

嘗試使用masks

mask_A = DF['Feature Enabled'] == 1 
mask_B = DF['Iteration'] == CURRENTLOG_ID 

subset = DF[mask_A & mask_B].groupby(...).mean() 
+0

我認爲你仍然需要將括號中的條件放在括號內()'()' – EdChum

+1

謝謝alec_djinn,我已經解決了你的解決方案,但最終還是採用了EdChums解決方案,因爲它符合我原來的計劃。但感謝突出顯示面具這將有用。 – MikG