Python 在数据帧上按操作分组
我有一个熊猫数据框,如下所示Python 在数据帧上按操作分组,python,pandas,Python,Pandas,我有一个熊猫数据框,如下所示 UsrId JobNos 1 4 1 56 2 23 2 55 2 41 2 5 3 78 1 25 3 1 我根据UsrId按数据帧分组。分组数据框在概念上如下所示 UsrId JobNos 1 [4,56,25] 2 [23,55,41,5] 3 [78,1] 现在,我正在寻找一个内置API,它
UsrId JobNos
1 4
1 56
2 23
2 55
2 41
2 5
3 78
1 25
3 1
我根据UsrId
按数据帧分组。分组数据框在概念上如下所示
UsrId JobNos
1 [4,56,25]
2 [23,55,41,5]
3 [78,1]
现在,我正在寻找一个内置API,它将为我提供具有最大作业计数的UsrId
。对于上面的示例,UsrId
-2具有最大计数
更新:
我希望
n
userid
具有最大作业计数,而不是具有最大作业计数的UsrID
。对于上述示例,如果n=2
,则输出为[2,1]
。这可以做到吗?类似于df.groupby('UsrId').JobNos.sum().idxmax()的东西应该做到:
In [1]: import pandas as pd
In [2]: from StringIO import StringIO
In [3]: data = """UsrId JobNos
...: 1 4
...: 1 56
...: 2 23
...: 2 55
...: 2 41
...: 2 5
...: 3 78
...: 1 25
...: 3 1"""
In [4]: df = pd.read_csv(StringIO(data), sep='\s+')
In [5]: grouped = df.groupby('UsrId')
In [6]: grouped.JobNos.sum()
Out[6]:
UsrId
1 85
2 124
3 79
Name: JobNos
In [7]: grouped.JobNos.sum().idxmax()
Out[7]: 2
如果希望根据每组中的项目数获得结果:
In [8]: grouped.size()
Out[8]:
UsrId
1 3
2 4
3 2
In [9]: grouped.size().idxmax()
Out[9]: 2
更新:要获得有序结果,您可以使用.order
方法:
In [10]: grouped.JobNos.sum().order(ascending=False)
Out[10]:
UsrId
2 124
1 85
3 79
Name: JobNos
谢谢你的解决方案。它起作用了。我已经更新了我的问题。你能看一下并为更新后的问题提出解决方案吗。