筛选df中某列重复值的索引

DataFrame数据

import pandas as pd
data = {'year': ['2018', '2019', '2016', '2012', '2013', '2016',
                 '2018', '2019'],
        'variable': ['A','A','A','B','B','C','C','C'],
        'value': [3.0 ,4.0 ,6.0 ,3.0 ,8.0 ,4.0 ,10.0 ,4.0 ]}
df = pd.DataFrame(data)
df
Out[1]: 
   year variable  value
0  2018        A    3.0
1  2019        A    4.0
2  2016        A    6.0
3  2012        B    3.0
4  2013        B    8.0
5  2016        C    4.0
6  2018        C   10.0
7  2019        C    4.0

 方法一:利用DataFram的groupby函数及lambda函数进行筛选重复数据,显示重复内容及重复内容在DataFram中的索引位置。

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

Out[2]: 
value
3.0       (0, 3)
4.0    (1, 5, 7)
dtype: object

  方法二:利用DataFram的groupby函数及for迭代进行筛选重复数据,显示重复内容及重复内容在DataFram中的索引位置。

{k: tuple(d.index) for k, d in df.groupby('value') if len(d) > 1}
Out[3]: {3.0: (0, 3), 4.0: (1, 5, 7)}

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值