我们如何编写一个函数来获取重复值的行号并获取min(行号)?

  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
jinjing003 回答:我们如何编写一个函数来获取重复值的行号并获取min(行号)?

IIUC,duplicatedtransform('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
,

尽管我不能从这个问题中了解到分组背后的意图是什么,但是如果您想查看唯一事件及其索引(重复的),您总是可以使用分组。

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的答案

本文链接:https://www.f2er.com/3150736.html

大家都在问