Wie erhält man Zeilen in einem Pandas-Datenrahmen mit Maximalwerten in einer Spalte und behält den ursprünglichen Index bei?

Ich habe einen Pandadatenrahmen. In der ersten Spalte kann es mehrmals den gleichen Wert haben (dh die Werte in der ersten Spalte sind nicht eindeutig).

Immer wenn ich mehrere Zeilen habe, die den gleichen Wert in der ersten Spalte enthalten, möchte ich nur diejenigen in der dritten Spalte belassen, die den maximalen Wert haben. Fast hätte ich eine Lösung gefunden:

import pandas

ls = []
ls.append({'c1':'a', 'c2':'a', 'c3':1})
ls.append({'c1':'a', 'c2':'c', 'c3':3})
ls.append({'c1':'a', 'c2':'b', 'c3':2})
ls.append({'c1':'b', 'c2':'b', 'c3':10})
ls.append({'c1':'b', 'c2':'c', 'c3':12})
ls.append({'c1':'b', 'c2':'a', 'c3':7})

df = pandas.DataFrame(ls, columns=['c1','c2','c3'])
print df
print '--------------------'
print df.groupby('c1').apply(lambda df:df.irow(df['c3'].argmax()))

Als Ergebnis bekomme ich:

  c1 c2  c3
0  a  a   1
1  a  c   3
2  a  b   2
3  b  b  10
4  b  c  12
5  b  a   7
--------------------
   c1 c2  c3
c1          
a   a  c   3
b   b  c  12

Mein Problem ist, dass ich nicht haben willc1 als Index. Was ich haben möchte, ist folgendes:

  c1 c2  c3
1  a  c   3
4  b  c  12

Antworten auf die Frage(2)

Ihre Antwort auf die Frage