加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在pandas DataFrame中查找重复行的索引

发布时间:2020-12-20 12:03:48 所属栏目:Python 来源:网络整理
导读:什么是在给定的DataFrame中查找相同行的索引而不迭代各行的pandas方法? 虽然可以找到具有unique = df [df.duplicated()]的所有唯一行,然后使用unique.iterrows()迭代唯一条目,并在pd.where()的帮助下提取相等条目的索引,这是熊猫的做法吗? 例: 给定以下结
什么是在给定的DataFrame中查找相同行的索引而不迭代各行的pandas方法?

虽然可以找到具有unique = df [df.duplicated()]的所有唯一行,然后使用unique.iterrows()迭代唯一条目,并在pd.where()的帮助下提取相等条目的索引,这是熊猫的做法吗?

例:
给定以下结构的DataFrame:

| param_a | param_b | param_c
1 | 0       | 0       | 0
2 | 0       | 2       | 1
3 | 2       | 1       | 1
4 | 0       | 2       | 1
5 | 2       | 1       | 1
6 | 0       | 0       | 0

输出:

[(1,6),(2,4),(3,5)]

解决方法

对所有欺骗行使用参数 duplicated和keep = False,然后按所有列分组并将索引值转换为元组,最后将输出系列转换为列表:

df = df[df.duplicated(keep=False)]

df = df.groupby(df.columns.tolist()).apply(lambda x: tuple(x.index)).tolist()
print (df)
[(1,5)]

如果你还想看到重写值:

df1 = (df.groupby(df.columns.tolist())
       .apply(lambda x: tuple(x.index))
       .reset_index(name='idx'))
print (df1)
   param_a  param_b  param_c     idx
0        0        0        0  (1,6)
1        0        2        1  (2,4)
2        2        1        1  (3,5)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读