2017-05-25 75 views
1

我正在尋找一種方法在熊貓聚集找到一列的價值,基於其他列的價值。基於其他列使用熊貓聚合的結果

例如: 我有以下的數據幀

df = pd.DataFrame({"Project":['A','B','C','D','E'], 
        "Country" :['Brazil','Brazil','Germany','Germany','Argentina'],\ 
        "Value":[12,11,14,15,18]}) 

     Country Project Value 
0  Brazil  A  12 
1  Brazil  B  11 
2 Germany  C  14 
3 Germany  D  15 
4 Argentina  E  18 

我創造了這個聚集:

aggregations = {'Project':{'Number of projects':'count'}, 
       'Value':{'Mean':'mean', 
         'Max':'max', 
         'Min':'min'}} 

df.groupby(['Country']).agg(aggregations) 

我想補充到這個集合的一個新列至極會給作爲導致的項目名稱最大值爲 '值'被觀察到。意圖結果將如下所示:

    Project Value   
      Number of Projects Mean Max Min Projec_Max Projec_Min 
Country       
Argentina     1 18.0 18 18   E   E   
Brazil      2 11.5 12 11   A   B 
Germany      2 14.5 15 14   D   C 

如何在彙總字典中實現此操作?

在此先感謝

回答

0

不知道這是最好的方式,但它似乎工作:

aggregations = {'Project':{'Number of projects':'count'}, 
       'Value':{'Mean':'mean', 
         'Max':'max', 
         'Min':'min', 
         'Project_Max': lambda x: df['Project'][x.idxmax()], 
         'Project_Min': lambda x: df['Project'][x.idxmin()]}} 
df.groupby(['Country']).agg(aggregations) 

結果:

   Value          Project 
      Project_Max Project_Min Max Mean Min Number of projects 
Country               
Argentina   E   E 18 18.0 18     1 
Brazil    A   B 12 11.5 11     2 
Germany    D   C 15 14.5 14     2 
+0

謝謝,jdehesa。 – Carlos