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

什么是在给定的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, 6), (2, 4), (3, 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)
点赞