Pandas dataframe找出列中重复值的索引

时间:2021-09-29 17:49:29

这里演示找出Panda dataframe 列里重复值的索引,其中索引从0开始。

dataframe数据如下:

id   | name |  
1    |   a  |
2    |   b  |    
4    |   c  |     
9    |   d  |     
3    |   e  |   
4    |   c  |   
9    |   d  |  

期待输入结果为:

4:(2,5),9:(3,6):表示4出现在索引2和5的行,而9出现在索引3和6的行。

方案一:使用groupby和apply lambda

df.groupby('id').apply(
    lambda d: tuple(d.index) if len(d.index) > 1 else None
).dropna()

id
4    (2, 5)
9    (3, 6)
dtype: object

方案二:使用for对groupby迭代

{k: tuple(d.index) for k, d in df.groupby('id') if len(d) > 1}

{4: (2, 5), 9: (3, 6)}