我有一个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
to_frame
功能。 - alko