猿问

如何分配唯一的ID以检测熊猫数据框中的重复行?

我正在处理一个大熊猫数据框,其中有几列非常像这样:


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?


神不在的星期二
浏览 173回答 2
2回答

芜湖不芜

对于小型数据框,您可以将行转换为元组(可以进行哈希处理),然后使用pd.factorize。df['new_id'] = pd.factorize(df.apply(tuple, axis=1))[0] + 1groupby 对于较大的数据框,效率更高:df['new_id'] = df.groupby(df.columns.tolist(), sort=False).ngroup() + 1

慕妹3146593

按您要查找重复项的列进行分组并使用ngroup:df['new_id'] = df.groupby(['A','B','C','D']).ngroup()
随时随地看视频慕课网APP

相关分类

Python
我要回答