pandas 如何在DataFrame中查找重复索引?

7z5jn7bk  于 2023-03-11  发布在  其他
关注(0)|答案(5)|浏览(258)

我有一个带有多级索引(“示例”和“索引”)的Pandas数据框,我想找到所有非唯一的第一级(“示例”)索引值,并打印出这些值。
我的框架如下所示:

A
instance  index      
      a       1      10
              2      12
              3      4
      b       1      12
              2      5
              3      2 
      b       1      12
              2      5
              3      2

我想找到“B”作为重复的0级索引,并打印出它的值(“b”)。

11dmarpk

11dmarpk1#

可以使用get_duplicates()方法:

>>> df.index.get_level_values('instance').get_duplicates()
[0, 1]

(In我的示例数据01都出现了多次。)
get_level_values()方法可以接受标签(如'instance')或整数,并检索MultiIndex的相关部分。

kulphzqa

kulphzqa2#

假设你的df有一个由'instance''index'组成的索引,你可以这样做:

df1 = df.reset_index().pivot_table(index=['instance','index'], values='A', aggfunc='count')
df1[df1 > 1].index.get_level_values(0).drop_duplicates()

其结果为:

Index([u'b'], dtype='object')

在末尾添加.values.drop_duplicates().values)将生成一个数组:

array(['b'], dtype=object)

或者使用.groupby对一行执行相同操作:

df[df.groupby(level=['instance','index']).count() > 1].dropna().index.get_level_values(0).drop_duplicates()
goqiplq2

goqiplq23#

这应该会给予你一整行,这是不完全是你所要求的,但可能是足够接近:
df[df.index.get_level_values('instance').duplicated()]

xmd2e60i

xmd2e60i4#

您需要复制的方法:

df['Instance'].duplicated()
jfewjypa

jfewjypa5#

要查看具有重复索引的行:

duplicated = df[df.index.duplicated()]

相关问题