![](/img/trans.png)
[英]How to assign a unique id for a sequence of repeated column value in pandas dataframe?
[英]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.