Python 按一列分组并查找两列中的第一列

Python 按一列分组并查找两列中的第一列,python,pandas,group-by,Python,Pandas,Group By,我有一个数据帧geomerge,我需要按一列grpno.分组,并选择列MaxOfcount percent的第一列和列状态代码的第一列,同时显示grpno.。我将它们重命名为FirstOfMaxOfState计数百分比和FirstOfstate代码 我的输入数据帧: count percent grpno. state code MaxOfcount percent 0 14.78 1 CA 14.78 1

我有一个数据帧geomerge,我需要按一列
grpno.
分组,并选择列
MaxOfcount percent
的第一列和列
状态代码的第一列,同时显示
grpno.
。我将它们重命名为
FirstOfMaxOfState计数百分比
FirstOfstate代码

我的输入数据帧:

      count percent  grpno. state code  MaxOfcount percent
0          14.78       1         CA               14.78
1           0.00       2         CA                0.00
2           0.00       2         FL                0.00
3           8.80       3         CA                8.80
4           0.00       6         NC                0.00
5           0.00       5         NC                0.00
6          59.00       4         MA               59.00
      FirstOfMaxOfState count percent  state pool number FirstOfstate code
0                            14.78                  1                CA
1                             0.00                  2                CA
2                             8.80                  3                CA
3                            59.00                  4                MA
4                             0.00                  5                NC
5                             0.00                  6                NC
我的输出数据帧:

      count percent  grpno. state code  MaxOfcount percent
0          14.78       1         CA               14.78
1           0.00       2         CA                0.00
2           0.00       2         FL                0.00
3           8.80       3         CA                8.80
4           0.00       6         NC                0.00
5           0.00       5         NC                0.00
6          59.00       4         MA               59.00
      FirstOfMaxOfState count percent  state pool number FirstOfstate code
0                            14.78                  1                CA
1                             0.00                  2                CA
2                             8.80                  3                CA
3                            59.00                  4                MA
4                             0.00                  5                NC
5                             0.00                  6                NC

有人能帮忙吗?

删除不需要的列,按
grpno
分组,取第一个值,并展平多索引:

df2 = df.drop('count percent', 1).groupby('grpno.').take([0]).reset_index(0)
重命名列:

mapping = {'state code':'FirstOfstate code' ,
           'grpno.': 'state pool number',
           'MaxOfcount percent': 'FirstOfMaxOfState count percent'}
df2.rename_axis(mapping, axis=1)
结果:

>>> df2

   state pool number  FirstOfMaxOfState count percent FirstOfstate code
0                  1                            14.78                CA
1                  2                             0.00                CA
3                  3                             8.80                CA
6                  4                            59.00                MA
5                  5                             0.00                NC
4                  6                             0.00                NC