Как назначить уникальный идентификатор для обнаружения повторяющихся строк в кадре данных pandas? - PullRequest
0 голосов
/ 30 июня 2018

Я работаю с большим фреймом данных панд, с несколькими столбцами, примерно такими:

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

Как я могу назначить уникальный идентификатор каждой повторяющейся строке? Например:

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

Однако не работает. Как я могу получить уникальный идентификатор для обнаружения групп дублированных строк?

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Для небольших фреймов данных вы можете конвертировать строки в кортежи, которые можно хэшировать, а затем использовать 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
0 голосов
/ 30 июня 2018

Группируйте по столбцам, над которыми вы пытаетесь найти дубликаты, и используйте ngroup:

df['new_id'] = df.groupby(['A','B','C','D']).ngroup()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...