2013-03-29 4 views
6

私の質問に言い換えてください。私は、次のような問題のための解決策を探しています:Python:どのグループに属しているグループの最大値を持つ行を取得するには?

のように、私はデータフレームを持っている:私の目標は、例えば、各グループに等しい最大カウントすべての行を取得することです

Sp Mt Value count 
4 MM2 S4 bg  10 
5 MM2 S4 dgd 1 
6 MM4 S2 rd  2 
7 MM4 S2 cb  8 
8 MM4 S2 uyi 8 

:[ 'Spの'、 '山']によって

MM4 S4 bg  10 
MM4 S2 cb  8 
MM4 S2 uyi 8 

Iグループは

誰かが私はパンダやPythonでそれを行うことができます方法を知っていますか?

+1

これは以前の質問ではありませんか、もう一度尋ねられますか? – DSM

+0

はい、申し訳ありませんが、以前はよく形式化されていませんでした – jojo12

+0

[Python:groupbyを使用してグループ内で最大値を持つ行を取得する]の可能な複製(http://stackoverflow.com/questions/15705630/python-getting-therow group-usingby-groupby)を使用しています。 –

答えて

14
>>> print d 
    Sp Mt Value Count 
ID      
4 MM2 S4 bg  10 
5 MM2 S4 dgd  1 
6 MM4 S2 rd  2 
7 MM4 S2 cb  8 
8 MM4 S2 uyi  8 

>>> d.groupby('Sp').apply(lambda t: t[t.Count==t.Count.max()]) 
     Sp Mt Value Count 
Sp ID      
MM2 4 MM2 S4 bg  10 
MM4 7 MM4 S2 cb  8 
    8 MM4 S2 uyi  8 
+2

私はちょうどポストする他の質問には、df.groupby(["Sp"、 "Mt"])。apply(lambda x:x [x ["count"] == x ["count"]。max()])私はOPが両方でグループバイを望んでいると思う。 – DSM

+0

あなたのソリューションをありがとう! – jojo12