Как получить строки во фрейме данных Pandas с максимальными значениями в столбце и сохранить исходный индекс?
У меня есть фрейм данных панд. В первом столбце он может иметь одно и то же значение несколько раз (другими словами, значения в первом столбце не являются уникальными).
Всякий раз, когда у меня есть несколько строк, которые содержат одинаковое значение в первом столбце, я хотел бы оставить только те, которые имеют максимальное значение в третьем столбце. Я почти нашел решение:
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()))
В результате я получаю:
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
Моя проблема в том, что я не хочу иметьc1
в качестве индекса. Я хочу иметь следующее:
c1 c2 c3
1 a c 3
4 b c 12