重复ID数据集筛选规则技术疑问:按ID校验最早日期是否可简化为仅保留最小Pct值行
关于重复ID数据筛选规则的冗余性分析
原始数据集
先看我们的输入数据:
ID Date Weight Pct 1 11/01/2020 12.14 1.53 1 12/14/2020 12.89 3.07 2 05/27/2020 18.24 4.61 3 16/19/2020 13.56 1.89 4 07/05/2020 15.12 2.48 4 08/15/2020 11.45 1.25
给定的筛选规则
针对存在重复ID的行,规则如下:
- 若目标行的
Pct是该ID下的最小值,则优先保留该ID中日期最早的行 - 但如果日期最早的行恰好是该ID下
Pct最大的行,就忽略日期条件,直接保留Pct最小的行
预期输出结果
按照规则处理后的预期结果:
ID Date Weight Pct 1 11/01/2020 12.14 1.53 2 05/27/2020 18.24 4.61 3 16/19/2020 13.56 1.89 4 08/15/2020 11.45 1.25
解答:日期校验步骤是否冗余?能不能直接取Pct最小的行?
先看你提供的原始数据:
- 对于ID1:
Pct最小值对应的行正好是日期最早的行,直接取Pct最小值和原规则结果一致 - 对于ID4:
Pct最小值对应的行日期不是最早的,但因为最早日期的行是Pct最大值,规则要求保留Pct最小的行,这也和直接取Pct最小值的结果一致
看起来在当前数据集里,直接筛选Pct最小的行就能得到预期结果,但这不代表日期校验步骤完全冗余——它是为了处理Pct最小值不唯一的场景:
举个例子,假设某个ID有如下数据:
ID Date Pct 5 01/01/2023 2.0 5 02/01/2023 1.0 5 03/01/2023 1.0
这里Pct最小值是1.0,对应两行记录。按照原规则,我们需要保留其中日期最早的那一行(02/01/2023);但如果直接取Pct最小的行,会得到两行结果,不符合“每个ID仅保留一行”的需求。
所以结论是:
- 针对你当前的数据集,每个ID的
Pct最小值都是唯一的,此时直接筛选Pct最小的行可以得到和原规则相同的结果,日期校验步骤在这个特定场景下是冗余的 - 但从规则的通用性和扩展性来说,日期校验步骤是必要的——它解决了
Pct最小值存在多行时的筛选问题,确保每个ID最终只保留一行数据
内容的提问来源于stack exchange,提问作者Science11
相关产品推荐
相关产品推荐

