我正在处理一个大熊猫数据框,其中有几列非常像这样:A B C D John Tom 0 1Homer Bart 2 3Tom Maggie 1 4 Lisa John 5 0Homer Bart 2 3Lisa John 5 0Homer Bart 2 3Homer Bart 2 3Tom Maggie 1 4如何为每个重复的行分配唯一的ID?例如:A B C D new_idJohn Tom 0 1.2 1Homer Bart 2 3.0 2Tom Maggie 1 4.2 3Lisa John 5 0 4Homer Bart 2 3 5Lisa John 5 0 4Homer Bart 2 3.0 2Homer Bart 2 3.0 2Tom Maggie 1 4.1 6我知道我可以duplicate用来检测重复的行,但是我无法想象正在增加这些行。我尝试过了:df.assign(id=(df.columns).astype('category').cat.codes)df但是,无法正常工作。如何获取用于检测重复行组的唯一ID?
2 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
对于小型数据框,您可以将行转换为元组(可以进行哈希处理),然后使用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
慕妹3146593
TA贡献1820条经验 获得超9个赞
按您要查找重复项的列进行分组并使用ngroup
:
df['new_id'] = df.groupby(['A','B','C','D']).ngroup()
添加回答
举报
0/150
提交
取消