Pandas按date分组获取每日count最大值对应label的实现问题
解决方案
你之前的写法仅返回了分组后的最大值序列,没有关联原表的其他字段,以下是3种常用实现方案:
方案1:通过idxmax()直接取最大值对应行(最简洁,推荐)
该方法会直接提取每组count列最大值对应的行索引,一次性返回所有字段:
# 按date分组,取count最大值对应的行索引,再从原表中筛选对应行 result = dff.loc[dff.groupby('date')['count'].idxmax()].reset_index(drop=True) print(result)
输出结果:
date label count 0 2021-02-25 A 5 1 2021-02-26 A 6
方案2:排序后去重(适合自定义优先级场景)
如果存在同一天多个相同最大值的情况,可以通过排序规则调整优先返回的行:
# 先按count降序排序,再按date去重保留第一条记录,最后按日期排序 result = dff.sort_values('count', ascending=False)\ .drop_duplicates('date')\ .sort_values('date')\ .reset_index(drop=True)
方案3:返回所有并列最大值记录(适合多最大值场景)
如果需要返回同一天内所有count等于最大值的记录,可以用transform做匹配:
# 先给每行拼接对应日期的最大值,再筛选匹配的记录 dff['max_count'] = dff.groupby('date')['count'].transform('max') result = dff[dff['count'] == dff['max_count']].drop(columns='max_count').reset_index(drop=True)
内容的提问来源于stack exchange,提问作者hippocampus
相关产品推荐
相关产品推荐

