2016-04-20 35 views
1

我的數據:熊貓.groupby():聚合包括分組變量

a_1, a_2, b_1, b_2, ... 
0, 0, 1, 0, ... 
1, 0, 0, 1, ... 
1, 1, 1, 0, ... 
0, 1, 0, 0, ... 
etc... 

我要總結對每列的所有行,那麼現在通過if a_1 == 1循環再if b_1 == 1if c_1 == 1

我有testDict = {k : df[df[k + '_1']==1].groupby(k + '_1').sum() for k in letters}

但是,這除了列分組之外的所有列總和...我也希望總和。任何想法或建議?

輸出應該是這樣的:

testDict['a'] : 
a_1, a_2, b_1, b_2, ... 
2, 1, 1, 1, ... 

testDict['b'] : 
a_1, a_2, b_1, b_2, ... 
1, 1, 2, 0, .... 

謝謝。

+2

你能張貼預期的輸出?和更多行的輸入數據? – Zero

+0

@john galt更好嗎?我的問題的另一個可能的解決方案是'testDict = {k:df [df [k +'_1'] == 1] .groupby()。sum()for k in letters}''但'.groupby'需要一個參數 – As3adTintin

+0

@johngalt啊,我想通了,對不起! – As3adTintin

回答

0

哦,哎呀,我完全錯過了這一點。我可以只使用testDict = {k : df[df[k + '_1']==1].sum() for k in letters}而不需要groupby! durrrr。

我結束了testDict = {k : pd.DataFrame(df[df[k + '_1']==1].sum()).transpose() for k in letters}維持橫向佈局(.sum()創建一個垂直佈局)