识别唯一的三胞胎我代表独特项数据帧。每个项目由一组varA
,varB
和varC
(因此每个项目具有varA
,varB
或varC
的0到n值)唯一地标识。我的DF拥有的每一个独立的项目多原糖,用varA
,varB
,并且varC
各种组合。大熊猫 - 从DF
的df是这样的(ID
是列中唯一的,但它并不代表唯一的项目)。
df = pd.DataFrame({'ID':[1,2,3,4,5],
'varA':['a', 'd', 'a', 'm','Z'],
'varB':['b', 'e', 'k', 'e',NaN],
'varC':['c', 'f', 'l', NaN ,'t']})
所以在这里的DF,你可以看到:
- 1和3是相同的项目有:{瓦拉:[A],varB:[B,K],VARC:并[c,1]}。
- 2和4也相同:{翻:[d,M],varB:[E],VARC:[F]}
我想确定每个唯一项目,给他们唯一的ID,并存储他们的信息。
我写的代码是非常低效的:
- 第一步:我通过数据帧中的每一行走,让每一个变量
- 当三个变量是新的列表,这是一个新的项目,我给它一个ID。
- 当任一变量是知道的,我保存了新的在各自的列表并保持行走到下一行
- 第二步:有一次,我走了所有的数据帧,我有两个亚群:
- 1有唯一的ID,
- 另外一个没有唯一的ID,但其信息可在具有唯一ID的人可以发现,无论是与
varA
,varB
,或varC
。因此,我非常不情愿地在任一变量上合并,并找到唯一的ID。
- 结果:我不是在开始时一样DF,但反复的独特标识符列。
这20000行的进入与varA
和varB
效果很好。这在运行非常缓慢且在结束之前(步骤1和步骤2之间)在100,000行上死亡,我需要在1,000,000行上进行。
这样做的任何pandanique方式?
您能提供您的预期结果吗? – Cleb
鉴于3和4分别相同,你会给1和2分配一个唯一的ID吗? (这意味着你保留了重复的第一次发生?) –
我想给1和3同样的唯一ID,和2和4一样。类似于你的答案(非常酷的东西!),但每行应该有一个唯一的ID值。 –