按两列分组并获得第三列的最大值
Posted
技术标签:
【中文标题】按两列分组并获得第三列的最大值【英文标题】:group by two columns and get the max of a third 【发布时间】:2021-12-04 14:07:26 【问题描述】:我有一个像下面这样的df:
d = 'date':['2021-02-25','2021-02-25','2021-02-25','2021-02-26','2021-02-26','2021-02-26'],
'label':['A','B','J','A','B','J']
,'count' : [5,1,4,6,3,2]
dff = pd.DataFrame(d)
print(dff)
date label count
0 2021-02-25 A 5
1 2021-02-25 B 1
2 2021-02-25 J 4
3 2021-02-26 A 6
4 2021-02-26 B 3
5 2021-02-26 J 2
我想做的是按日期和标签分组,并获取每天的最大计数标签。 我执行以下操作并得到以下结果:
dff.groupby(['date'])['count'].max()
date
2021-02-25 5
2021-02-26 6
但是,我想做的还包括在结果中具有最大计数的标签。本质上,我想要下面这样的东西:
date label
2021-02-25 A 5
2021-02-26 A 6
【问题讨论】:
【参考方案1】:获取 groupby 并对其进行过滤:
dff.loc[dff['count'] == dff.groupby('date')['count'].transform('max')]
Out[436]:
date label count
0 2021-02-25 A 5
3 2021-02-26 A 6
或者,您可以在分组前对count
列进行排序,并保留最大行数:
dff.sort_values('count').groupby('date', as_index = False).nth(-1)
Out[444]:
date label count
0 2021-02-25 A 5
3 2021-02-26 A 6
【讨论】:
以上是关于按两列分组并获得第三列的最大值的主要内容,如果未能解决你的问题,请参考以下文章