¿Cómo obtener filas en el marco de datos de pandas, con valores máximos en una columna y mantener el índice original?

Tengo un marco de datos de pandas. En la primera columna puede tener el mismo valor varias veces (en otras palabras, los valores de la primera columna no son únicos).

Cada vez que tengo varias filas que contienen el mismo valor en la primera columna, me gustaría dejar solo las que tienen un valor máximo en la tercera columna. Casi encuentro una solución:

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()))

Como resultado obtengo:

  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

Mi problema es que no quiero tener.c1 como índice Lo que quiero tener es lo siguiente:

  c1 c2  c3
1  a  c   3
4  b  c  12

Respuestas a la pregunta(2)

Su respuesta a la pregunta