2017-01-06 15 views
2

これは私にとってはちょっと難しいことです。 (すなわち、同じ「グループ」)パンダのデータフレームをスライスして条件に並べ替え

Group Mag Morph 
    1  -21.1  S 
    1  -20.3  E 
    1  -22.0  E 
    2  -18.1  E 
    2  -23.6  S 
    2  -21.9  S 
    3  -19.4  S 
    3  -19.1  E 

私は唯一のグループを選択したい対象の最低「マグ」は「モーフ」の「S」に対応していますのは、私はこのデータフレームを持っているとしましょう。

例えば、ここではグループ1の

  • 、最低が 'E' モーフ(SO基が取られていない)に対応-22.0であり、グループ2用

  • それは-23.6です、 'S'(取ったグループ)、

  • 、グループ3の-19.4では 'S'なので、グループを取った。

誰かが私を助けてもらえますか?したがって、それは

Group Mag Morph 
    2  -18.1  E 
    2  -23.6  S 
    2  -21.9  S 
    3  -19.4  S 
    3  -19.1  E 

を選択することになりますか

答えて

1

あなたはグループごとに列Morphのチェック値のためidxminfilterを使用することができます。

print (df.groupby('Group').filter(lambda x: x.loc[x.Mag.idxmin(), 'Morph'] == 'S')) 
    Group Mag Morph 
3  2 -18.1  E 
4  2 -23.6  S 
5  2 -21.9  S 
6  3 -19.4  S 
7  3 -19.1  E 
+0

それは完璧に動作、どうもありがとうございました! :) – Matt