【发布时间】:2019-10-08 16:34:33
【问题描述】:
在数据集中,散列观察(一行)的两个属性的唯一 ID 是否是为观察创建唯一 ID 的正确方法,因为该观察的唯一性来自所述属性的共现?
数据示例如下:
scenario_id procedure_spvid
0 2986 114374
1 2986 114660
2 2986 128564
3 2986 125072
scenario_id:
min, max: 25, 5100306
count unique: 2629
procedure_spvid:
min, max: 2, 9000057
count unique: 1163
但是,ID 不是连续的,即没有 5,100,306 个场景。
我在 Python 中对数据集所做的是:
hex(hash((scenario_id,procedure_spvid)))
【问题讨论】:
-
一般来说,“散列”和“唯一”是不兼容的。总是有重复的可能性,无论多么小。我不能说您的特定情况是否是该规则的例外。您需要提供一个更具体的示例。包括您的 ID 的大小和 ID 的数量,以及散列的范围。
-
是的,我认为可能存在重复。我用统计数据更新了我的问题。如果您可以分享我如何确定哈希是否唯一的基础知识,非常感谢。或者也许另一种方法更好。
-
你在用哈希做什么?使用
(scenario_id,procedure_spvid)元组可能会更好 -
我的最终目标是标记重复的观察结果(行)。有关scenario_id 和procedure_spvid 的重复项。我还不想只删除重复项。我需要向利益相关者展示数据的当前状态,并且为每个唯一的场景-过程对设置一个唯一的 ID 可能会有所帮助。
-
如果您需要隐藏 (s,p) 对的值,并且您想使用函数而不是 (id,s,p) 表,您会想知道什么是伪随机排列 (PRP) 是。