在数据集中,对观察的两个属性的唯一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)))
唯一的[[truly唯一存储唯一(sid, pid)
对的唯一方法是通过字符串,元组等将它们彼此嫁接在一起。但是如果sid
和pid
分别存在,则说,即4个字节,则至少需要8个字节。如果只想使用4个字节,则可以使用4个字节的(sid, pid)
哈希值-但由于仅将4个字节以上的可能选项放入4个字节中,因此存在重复的可能性。从数学上讲,这就是pigeonhole principle。
together
它们为行的其余部分提供主键。如果您使用的是正确语言的哈希表(例如pythondict
),则该数据结构将跟踪重复的哈希并容纳它们,以使它们不会返回相同的值。 如果您使用的是散列并自己进行管理,则必须接受冲突的可能性。没有特别看到您的数据集,我们无法真正解决问题[[为什么
,但是您可能会看到重复的哈希。