識別唯一的三胞胎我代表獨特項數據幀。每個項目由一組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值。 –