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

Power Query按ID去重并保留对应最早日期行的实现方法

按ID去重并保留最早日期行的解决方法

问题说明

现有包含ID和日期的表格,部分ID对应多个日期(格式为日/月/年),需按ID去重,仅保留每个ID对应的最早日期行,消除ID重复。

原表格示例

ID日期
ID 11/4/2022
ID 21/6/2022
ID 312/20/2021
ID 34/5/2022
ID 324/7/2022
ID 43/1/2022
ID 43/5/2022
ID 515/8/2022

目标表格示例

ID日期
ID 11/4/2022
ID 21/6/2022
ID 312/20/2021
ID 43/1/2022
ID 515/8/2022

方法1:Excel手动操作

  1. 标准化日期格式:选中日期列,点击「数据」→「分列」,按分隔符/拆分,将列数据格式设置为「日期」,确保Excel能识别日期值。
  2. 排序:选中整个数据区域,点击「数据」→「排序」,设置主要关键字为ID(升序)、次要关键字为日期(升序),让每个ID的最早日期排在最上方。
  3. 删除重复项:选中ID列,点击「数据」→「删除重复项」,仅勾选ID列,确认后自动保留每个ID的第一行(即最早日期行)。

方法2:Python(Pandas)批量处理

用Pandas库可快速完成数据清洗:

import pandas as pd

# 读取数据(替换为你的数据源路径或直接传入DataFrame)
df = pd.read_csv("data.csv")

# 将日期列转为datetime类型,指定格式为日/月/年
df["日期"] = pd.to_datetime(df["日期"], format="%d/%m/%Y")

# 按ID分组,保留每组日期最小的行
result_df = df.groupby("ID", as_index=False).agg({"日期": "min"})

# 转回原日期格式(可选)
result_df["日期"] = result_df["日期"].dt.strftime("%d/%m/%Y")

# 输出或保存结果
print(result_df)
result_df.to_csv("result.csv", index=False)

方法3:SQL数据库查询

如果数据存在数据库中,直接用分组查询获取结果:

-- MySQL示例
SELECT ID, DATE_FORMAT(MIN(STR_TO_DATE(日期, '%d/%m/%Y')), '%d/%m/%Y') AS 日期
FROM your_table
GROUP BY ID;

注:不同数据库日期转换函数不同:

  • SQL Server用CONVERT(datetime, 日期, 103)
  • Oracle用TO_DATE(日期, 'DD/MM/YYYY')
    根据实际数据库调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:35:13