按另一列分组并找到最大值(pandas)

5

我有一个包含2列的数据框:

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’列进行分组,并获取‘count percent’列的最大值。虽然我尝试过这样做:

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.”。有人可以帮忙吗?谢谢。
2个回答

8
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'})

0
你可以使用带有参数 as_index=Falsegroupby 方法:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接