python - 如何分配唯一的ID以检测 Pandas 数据框中的重复行?

标签 python python-3.x pandas

我正在处理一个 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?

最佳答案

对于小型数据框,您可以将行转换为可以进行哈希处理的元组,然后使用 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

关于python - 如何分配唯一的ID以检测 Pandas 数据框中的重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51110171/

相关文章:

python - Matplotlib 无法在 Django 上渲染多个等高线图

python - Django 管理表单字段 - 在选择框中显示对象相关的查询结果

python - 如何摆脱错误 "' float' 对象没有属性 'exp' ”?

python-3.x - 如何从 ipywidgets 输出返回 pandas 数据帧

python - Pandas 在 groupby 函数中计算空值

python - Pandas 根据列名称和内容删除列

python - 为什么从 python 脚本编译的 .exe 无法连接到远程 MS Access 数据库? [HY024]

Python 如何在 FOR-LOOP 回归中计算和存储残差

javascript - python3 打印函数发出 'ascii' codec can't encode character 错误

python - 删除多索引级别但保留列名 - pandas