Python 通过另一列查找列组的最大值

Python 通过另一列查找列组的最大值,python,pandas,group-by,max,Python,Pandas,Group By,Max,我有一个有两列的数据框 count percent grpno. 0 14.78 1 1 0.00 2 2 8.80 3 3 9.60 4 4 55.90 4 5 0.00 2 6 0.00 6 7 0.00 5 8 6.90

我有一个有两列的数据框

count percent  grpno.
0          14.78       1
1           0.00       2
2           8.80       3
3           9.60       4
4          55.90       4
5           0.00       2
6           0.00       6
7           0.00       5
8           6.90       1
9          59.00       4
我需要获取列“计数百分比”的最大值 '并按列“grpno”分组。虽然我试着用同样的方法

geostat.groupby(['grpno.'], sort=False)['count percent'].max()
我得到的输出是

grpno.
1    14.78
2     0.00
3     8.80
4    59.00
6     0.00
5     0.00
Name: count percent, dtype: float64
但我需要输出一个数据帧,它的列名被修改为“MaxOfcount percent”和“grpno”。有人能帮忙吗?谢谢

res = df.groupby('grpno.')['count percent'].max().reset_index()
res.columns = ['grpno.', 'MaxOfcount percent']

   grpno.  MaxOfcount percent
0       1               14.78
1       2                0.00
2       3                8.80
3       4               59.00
4       5                0.00
5       6                0.00
您也可以在一行中完成:

res = df.groupby('grpno.', as_index=False)['count percent'].max().rename(columns={'count percent': 'MaxOfcount percent'})

您可以将
groupby
与参数
一起使用,如_index=False

In [119]: df.groupby(['grpno.'], as_index=False)[['count percent']].max()
Out[119]: 
   grpno.  count percent
0       1    14.78
1       2     0.00
2       3     8.80
3       4    59.00
4       5     0.00
5       6     0.00

df1 = df.groupby(['grpno.'], as_index=False)[['count percent']].max()
df1.columns = df1.columns[:-1].tolist() + ['MaxOfcount percent']

In [130]: df1
Out[130]: 
   grpno.  MaxOfcount percent
0       1               14.78
1       2                0.00
2       3                8.80
3       4               59.00
4       5                0.00
5       6                0.00