2017-05-25 6 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) 

私は結果として新しい列ウィッヒは与えるだろう、この集合に追加したいと思いますプロジェクトの名前のうち最大値が の 'value'が見つかりました。意図する結果は次のようになります。

    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

関連する問題