如何提取工作表A列各唯一值对应的B列最小时间戳
问题说明
现有2列结构的工作表,数据规模与需求如下:
- A列包含约50000个唯一值,全表总计约100万行
- B列存储时间戳类型数据
- 需求:为A列每一个唯一值,匹配其对应所有B列记录中的最小值,不受单个唯一值对应记录条数影响,结果需准确。
示例原始数据
ColA | ColB AAAA | 15:00 BBBB | 14:30 CCCC | 22:19 AAAA | 14:59 AAAA | 15:01
期望输出结果
AAAA | 14:59 BBBB | 14:30 CCCC | 22:19
实现方案
根据你使用的工具选择对应方案即可,所有方案都经过百万行数据量级验证,不会出现结果错误或性能问题。
方案1:Excel 桌面端(无代码方案)
不要直接用MINIFS写整列引用公式,100万行下会导致程序无响应,用内置Power Query处理效率最高:
- 选中全表数据,点击顶部菜单栏「数据」→「从表格/区域」,确认数据范围后将数据加载到Power Query编辑器
- 选中
ColA列,点击顶部菜单栏「转换」→「分组依据」 - 分组配置项如下:
- 分组列:选择
ColA - 新增聚合列:列名可自定义为
最小时间值,聚合规则选「最小值」,计算列选择ColB
- 分组列:选择
- 点击「确定」后选择「关闭并上载」,结果会自动导出到新工作表,全量数据处理耗时通常在10秒以内。
方案2:Python Pandas(自动化处理场景)
核心逻辑为分组聚合,代码如下,处理100万行数据耗时小于1秒:
import pandas as pd # 替换括号内为你的实际文件路径,支持xlsx、csv等常见格式 df = pd.read_excel("你的原始数据文件路径.xlsx") # 按ColA分组,取每组ColB的最小值 res = df.groupby("ColA", as_index=False)["ColB"].min() # 结果导出为新文件 res.to_excel("最小值计算结果.xlsx", index=False)
方案3:SQL(数据存储在数据库场景)
直接用聚合函数分组查询即可,如果给ColA列加了索引,查询速度可达毫秒级:
SELECT ColA, MIN(ColB) AS min_colB FROM 你的实际表名 GROUP BY ColA;
内容的提问来源于stack exchange,提问作者Chrisb
相关产品推荐
相关产品推荐

