【问题标题】:How to assign a unique ID to detect repeated rows in a pandas dataframe?如何分配唯一 ID 来检测熊猫数据框中的重复行?
【发布时间】:2018-12-09 03:31:20
【问题描述】:

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

【问题讨论】:

标签: python python-3.x pandas


【解决方案1】:

对于小型数据帧,您可以将行转换为可以散列的元组,然后使用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

【讨论】:

    【解决方案2】:

    按您要查找重复的列分组并使用ngroup

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

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 2021-08-12
      • 1970-01-01
      • 2021-12-28
      • 2022-07-15
      • 2017-12-13
      • 2019-08-20
      • 1970-01-01
      • 2019-09-30
      相关资源
      最近更新 更多