2017-02-25 75 views
-1

我有列名稱爲A,B,C,D,e,f,g,h的數據框。這些列名稱存儲在一個列表爲cols1 = [A,B,C,D,E,F,G,H]如何分組列名通過循環存儲在列表中,並將值存儲在新變量中

我必須將這些列作爲df.groupby(['A','B','C' 'D','e'])並將其存儲在變量名中作爲e

再次作爲df.groupby(['A','B','C','D','f'])並將其存儲在變量名中作爲f

再次作爲df.groupby(['A','B','C','D','g'])直到列表的末尾。

這應該在循環中完成。然後將列e,f,g等的groupby.sum()值存儲在一個新變量中,以比較e,f,g,h的值。

做在pandas.Thanks提前

回答

0

IIUC需要groupbysum的任何方式:

df = pd.DataFrame({'A':[1,8,8], 
        'B':[4,6,6], 
        'C':[7,2,2], 
        'D':[1,3,3], 
        'e':[2,3,6], 
        'f':[0,2,4], 
        'g':[7,4,1], 
        'h':[1,4,2]}) 

print (df) 
    A B C D e f g h 
0 1 4 7 1 2 0 7 1 
1 8 6 2 3 3 2 4 4 
2 8 6 2 3 6 4 1 2 

cols1=['A','B','C','D','e','f','g','h'] 
cols11 = cols1[:4] 
print (cols11) 
['A', 'B', 'C', 'D'] 
cols12 = cols1[4:] 
print (cols12) 
['e', 'f', 'g', 'h'] 

df = df.groupby(cols11)[cols12].sum() 
print (df) 
     e f g h 
A B C D    
1 4 7 1 2 0 7 1 
8 6 2 3 9 6 5 6 

df = df.reset_index(drop=True) 
print (df) 
    e f g h 
0 2 0 7 1 
1 9 6 5 6 
相關問題