簡體   English   中英

如何分配唯一ID來檢測pandas數據幀中的重復行?

[英]How to assign a unique ID to detect repeated rows in a pandas dataframe?

我正在使用一個大型的pandas數據框,其中有幾個列非常類似:

A      B         C    D   

John   Tom       0    1
Homer  Bart      2    3
Tom    Maggie    1    4 
Lisa   John      5    0
Homer  Bart      2    3
Lisa   John      5    0
Homer  Bart      2    3
Homer  Bart      2    3
Tom    Maggie    1    4

如何為每個重復的行分配唯一的ID? 例如:

A      B         C    D      new_id

John   Tom       0    1.2      1
Homer  Bart      2    3.0      2
Tom    Maggie    1    4.2      3
Lisa   John      5    0        4
Homer  Bart      2    3        5
Lisa   John      5    0        4
Homer  Bart      2    3.0      2
Homer  Bart      2    3.0      2
Tom    Maggie    1    4.1      6

我知道我可以使用duplicate來檢測重復的行,但是我無法想象正在重新划分這些行。 我試過了:

df.assign(id=(df.columns).astype('category').cat.codes)
df

但是,不起作用。 如何獲取用於檢測重復行組的唯一ID?

按您嘗試查找重復項的列分組並使用ngroup

df['new_id'] = df.groupby(['A','B','C','D']).ngroup()

對於小型數據幀,您可以將行轉換為可以散列的元組,然后使用pd.factorize

df['new_id'] = pd.factorize(df.apply(tuple, axis=1))[0] + 1

groupby對於更大的數據幀更有效:

df['new_id'] = df.groupby(df.columns.tolist(), sort=False).ngroup() + 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM