You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中获取行数最多的分组(按天分组场景)

获取行数最多分组的原始数据

嘿,我来帮你搞定这个需求!你已经完成了按天统计行数的步骤,现在只需要几步就能拿到行数最多那天的原始数据,给你两种实用方法:

首先先回顾下你的基础数据和已完成的统计代码:

import pandas as pd

df1=pd.DataFrame({'x1':[5,5,4,6],'x2':[5,5,6,7], 'time':['11/7/2019','11/7/2019', '11/7/2019','12/7/2019']})
xx = (pd.to_datetime(df1['time']) 
      .dt.floor('d') 
      .value_counts() 
      .rename_axis('date') 
      .reset_index(name='count'))

方法一:基于已有统计结果筛选

既然你已经有了统计好的xx数据框,咱们直接从中找出行数最多的日期,再去原始数据里匹配对应的记录:

# 找到行数最多的日期(利用idxmax找到最大count的索引,再取出对应的date)
max_date = xx.loc[xx['count'].idxmax(), 'date']

# 转换原始数据的time列为日期格式,筛选匹配max_date的记录
result = df1[pd.to_datetime(df1['time']).dt.floor('d') == max_date]
print(result)

运行后会输出你想要的结果:

x1  x2         time
0   5   5  11/7/2019
1   5   5  11/7/2019
2   4   6  11/7/2019

方法二:直接分组筛选(更高效)

其实不用单独生成xx统计框,咱们可以直接对原始数据按天分组,然后一步筛选出最大的组:

# 按格式化后的日期分组
grouped = df1.groupby(pd.to_datetime(df1['time']).dt.floor('d'))
# 找到组内数据量最大的那个组的日期
max_group_date = max(grouped, key=lambda x: len(x[1]))[0]
# 获取该组的全部原始数据
result = grouped.get_group(max_group_date)
print(result)

这个方法省去了单独统计的步骤,数据量较大时会更高效。

小提示

  • 一定要注意日期格式的一致性:原始time列是字符串,必须用pd.to_datetime转换后再和统计出的datetime类型日期做匹配,避免格式不匹配导致筛选失败。

内容的提问来源于stack exchange,提问作者Edward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:40:55