Python 根据数据帧的组属性筛选数据帧
假设我们有问题跟踪日志,我们想找出问题所有者(记录问题时间最多的人)Python 根据数据帧的组属性筛选数据帧,python,pandas,grouping,Python,Pandas,Grouping,假设我们有问题跟踪日志,我们想找出问题所有者(记录问题时间最多的人) 用户可以多次登录同一问题 如果两个用户同时登录,则两个用户都是所有者 因此,我们有一些样本数据: df = pd.DataFrame([ [1, 10, 'John'], [1, 20, 'John'], [1, 30, 'Tom'], [1, 10, 'Bob'], [2, 25, 'John'], [2, 15, 'Bob']]
df = pd.DataFrame([
[1, 10, 'John'],
[1, 20, 'John'],
[1, 30, 'Tom'],
[1, 10, 'Bob'],
[2, 25, 'John'],
[2, 15, 'Bob']], columns = ['IssueKey','TimeSpent','User'])
作为输出,我们希望如下所示:
issues_owners = pd.DataFrame([
[1, 30, 'John'],
[1, 30, 'Tom'],
[2, 25, 'John']], columns = ['IssueKey','TimeSpent','User'])
1
的主人,因为他们都花了30分钟2
maxTimesPerIssue
本身有点混乱MaxTimePerIssue
dfreset\u index()
,list()
,dict()
,列表理解,删除列有人能帮我清理一下吗?一些类似于
groupby
的东西将适用于您的数据:
i = df.groupby(['IssueKey', 'User']).TimeSpent.sum()
j = i.groupby(level=0).transform('max')
i[i == j].reset_index()
IssueKey User TimeSpent
0 1 John 30
1 1 Tom 30
2 2 John 25
如果阅读此答案的任何人在理解
级别的含义时遇到困难(就像我所做的那样),请查看我对级别问题的回答:@gisek对不够清晰表示歉意,虽然你可以问:-)我想你现在已经知道了,但我正在利用中间输出中的多索引,并按照该索引的第0级进行分组。我对你的解决方案如此简洁感到非常兴奋,因此我决定自己做研究,而不是打扰你:)@gisek我很高兴听到这个消息。这个网站可以使用更积极主动的用户,他们不害怕学习,而不是一直被填鸭式的灌输。为你的努力鼓掌,祝你好运!
i = df.groupby(['IssueKey', 'User']).TimeSpent.sum()
j = i.groupby(level=0).transform('max')
i[i == j].reset_index()
IssueKey User TimeSpent
0 1 John 30
1 1 Tom 30
2 2 John 25