2016-07-11 10 views
3

私はこのデータフレームパンダ - 最高の値を持つ行を選択

col1 col2 col3 
0  2 A 1 
1  1 A 100 
2  3 B 12 
3  4 B 2 

を持っている、これは所望の出力、すなわち私は、などのA、Bとのすべてから、その後1、とのすべての最高のcol1の値を選択します

col1 col2 col3 
0  2 A 1 
3  4 B 2 

私はある種のgroupby( 'col2')が必要だと知っていますが、それ以降は何を使うべきかわかりません。

答えて

3

それはあなたが望むものですか?

In [16]: df.groupby('col2').max().reset_index() 
Out[16]: 
    col2 col1 
0 A  2 
1 B  4 
+0

@BaronYugovich、あなたの入力と希望するデータセットを適宜更新してください。だからそれは明らかになるだろう... – MaxU

+0

私の更新を参照してください –

+0

@ piRSquareisのソリューションを見てください - それはあなたが必要とするものです... – MaxU

2

使用groupby('col2')は、各グループ内の最大値のインデックスを取得するためにidxmaxを使用しています。最後に、これらのインデックス値を使用して元のデータフレームをスライスします。

df.loc[df.groupby('col2').col1.idxmax()] 

enter image description here

オリジナルデータフレームのインデックス値が保存されていることに注意してください。

関連する問題