这里演示找出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)}