Как мы можем написать функцию, чтобы получить номер строки дублированного значения и получить мин (номер строки)? - PullRequest
0 голосов
/ 06 ноября 2019
  name    job       id_number
0  krul    painter    125796 
1  tim     lawyer     789632
2  daisy   engg       256498
3  alex    dancer     456985
4  mandy   arch       456258
5  krul    painter    125796
6  tim     lawyer     789632
7  tim     lawyer     789632
8  tim     lawyer     789632
9  daisy   engg       256498
10 daisy   engg       256498

вывод:

 dup_Index   min_index
    0            0
    5            0
    2            2
    9            2
   10            2
    6            6
    7            7
    8            8

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

IIUC, duplicated и transform('idxmin') для минимального номера строки:

(df[df.duplicated('id_number', keep=False)]
    .groupby('id_number')['id_number'].transform('idxmin')
    .sort_values()
 )

Вывод:

0     0
5     0
1     1
6     1
7     1
8     1
2     2
9     2
10    2
Name: id_number, dtype: int64
0 голосов
/ 06 ноября 2019

Хотя я не могу уяснить вопрос о том, что является целью группировки, если вы хотите увидеть уникальные вхождения вместе с их (дублированными) индексами, вы всегда можете прибегнуть к группировке.

df.groupby(('name', 'job', 'id_number'),as_index=True).apply(lambda x: x.index.tolist())

Вывод:

name   job      id_number
alex   dancer   456985                [3]
daisy  engg     256498         [2, 9, 10]
krul   painter  125796             [0, 5]
mandy  arch     456258                [4]
tim    lawyer   789632       [1, 6, 7, 8]
dtype: object

К которым вы можете затем применять все виды запросов, чтобы получить длину и первый из списков.

В зависимости от того, что вам нужно для этого, возможно, есть лучшие способы сделать это, см., например, ответ @Quang Hoang

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...